diff -Nru ironic-2014.1~b3/AUTHORS ironic-2014.1~rc1/AUTHORS --- ironic-2014.1~b3/AUTHORS 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/AUTHORS 2014-04-01 19:55:10.000000000 +0000 @@ -1,6 +1,7 @@ Arata Notsu Chris Krelle +Dan Prince David Kang Devananda van der Veen Ken Igarashi diff -Nru ironic-2014.1~b3/ChangeLog ironic-2014.1~rc1/ChangeLog --- ironic-2014.1~b3/ChangeLog 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/ChangeLog 2014-04-01 19:55:10.000000000 +0000 @@ -1,9 +1,96 @@ CHANGES ======= +2014.1.rc1 +---------- + +* Manually update all translated strings +* Check that all po/pot files are valid +* If no swap is specified default to 1MB +* Remove obsolete po entries - they break translation jobs +* Add note to ssh about impact on ci testing +* Adds exact match filters to nova scheduler +* ironic_host_manager was missing two stats +* Imported Translations from Transifex +* Fix seamicro validate() method definition +* Remove some obsolete settings from DevStack doc +* Raise unexpected exceptions during destroy() +* Start using oslosphinx theme for docs +* Provide a new ComputeManager for Ironic +* Nova Ironic driver to set pxe_swap_mb in Ironic +* Fix strings post landing for c63e1d9f6 +* Run periodic_task in a with a dynamic timer +* Update SeaMicro to use MixinVendorInterface +* Run ipmi power status less aggressively +* Avoid API root controller dependency on v1 dir +* Update Neutron if mac address of the port changed +* Replace fixtures with mock in test_keystone.py +* Decrease running time of SeaMicro driver tests +* Remove logging of exceptions from controller's methods +* Imported Translations from Transifex +* Fix missed exception raise in _add_driver_fields +* Speed up ironic tests +* Pass no arguments to _wait_for_provision_state() +* Adds max retry limit to sync_power_state task +* Updated from global requirements +* Imported Translations from Transifex +* Stop incorrectly returning rescue: supported +* Correct version.py and update current version string +* Documentation for deploying DevStack /w Ironic +* Hide rescue interface from validate() output +* Change set_console_mode() to use greenthreads +* Fix help string for a glance option +* Expose API for fetching a single driver +* Change JsonEncodedType.impl to TEXT +* Fix traceback hook for avoid duplicate traces +* Fix 'spacing' parameters for periodic tasks +* Permit passing SSH keys into the Ironic API +* Better instance-not-found handling within IronicDriver +* Make sure auth_url exists and is not versionless +* Conductor de-registers on shutdown +* Change deploy validation exception handling +* Suppress conductor logging of expected exceptions +* Remove unused method from timeutils +* Add admin_auth_token option for nova driver +* Remove redundant nova virt driver test +* Process public API list as regular expressions +* Enable pep8 tests for the Nova Ironic Driver +* Fix typo tenet -> tenant +* Stop logging paramiko's DEBUG and INFO messages +* Set boot device to PXE when deploying +* Driver utils should raise unsupported method +* Delete node while waiting for deploy +* Check BMC availability in ipmitool 'validate' method +* SeaMicro use device parameter for set_boot_device +* Make the Nova Ironic driver to wait for ACTIVE +* Fix misspelled impi to ipmi +* Do not use __builtin__ in python3 +* Use range instead xrange to keep python 3.X compatibility +* Set the database.connection option default value +* PXE validate() to fail if no Ironic API URL +* Improve Ironic Conductor threading & locks +* Generic MixinVendorInterface using static mapping +* Conductor logs better error if seamicroclient missing +* Add TaskManager lock on change port data +* Nova ironic driver to retry on HTTP 503 +* Mark hash_replicas as experimental +* do_node_deploy() to use greenthreads +* Move v1 API tests to separate v1 directory +* Pin iso8601 logging to WARN +* Only fetch node once for vif actions +* Fix how nova ironic driver gets flavor information +* Imported Translations from Transifex +* API: Add sample() method to remaining models +* Import Nova "ironic" driver +* Remove errors from API documentation +* Add libffi-dev(el) dependency to quickstart +* Updated from global requirements +* Remove redundant default value None for dict.get + 2014.1.b3 --------- +* Refactor vendor_passthru to use conductor async workers * Fix wrong exception raised by conductor for node * Fix params order in assertEqual * Sync the log_handler from oslo @@ -11,6 +98,7 @@ * Implements SeaMicro VendorPassThru functionality * Implement the SeaMicro Power driver * Fix provision_updated_at deserialization +* Remove jsonutils from test_rpcapi * Do not delete a Node which is not powered off * Add provision_updated_at to node's resource * Prevent a node in maintenance from being deployed @@ -26,6 +114,8 @@ * Prevent GET /v1/nodes returning maintenance field * Suggested improvements to _set_boot_device * Move ipminative _set_boot_device to VendorPassthru +* Sync common db code from Oslo +* PXE clean_up() to remove the pxe_deploy_key parameter * Add support for custom libvirt uri * Python 3: replace "im_self" by "__self__" * Fix race condition when deleting a node diff -Nru ironic-2014.1~b3/debian/changelog ironic-2014.1~rc1/debian/changelog --- ironic-2014.1~b3/debian/changelog 2014-03-06 18:23:41.000000000 +0000 +++ ironic-2014.1~rc1/debian/changelog 2014-04-04 18:58:50.000000000 +0000 @@ -1,3 +1,22 @@ +ironic (2014.1~rc1-0ubuntu1) trusty; urgency=medium + + [ Adam Gandelman ] + * debian/ironic-common.postinst: Fix syntax preventing postinst + from running. + * debian/ironic-api.install: Create missing .install, install + ironic-api to /usr/bin/ironic-api. + * debian/patches/set_logdir.patch: Set log_dir to /var/log/ironic/ in + sample config, causing both daemons to log to respective files there. + * debian/{rules, ironic-common.install}: Install ironic.conf.sample + as /etc/ironic/ironic.conf. + * Fail build if test suite fails, limit testing concurrency to 1. + * debian/control: Add missing alembic, python-lockfile dependencies. + + [ James Page ] + * d/control: Add Vcs-* fields for ubuntu-server-dev branches. + + -- Adam Gandelman Fri, 04 Apr 2014 11:54:02 -0700 + ironic (2014.1~b3-0ubuntu1) trusty; urgency=medium * New upstream release: diff -Nru ironic-2014.1~b3/debian/control ironic-2014.1~rc1/debian/control --- ironic-2014.1~b3/debian/control 2014-03-06 18:23:41.000000000 +0000 +++ ironic-2014.1~rc1/debian/control 2014-04-04 18:58:50.000000000 +0000 @@ -3,6 +3,7 @@ Priority: extra Maintainer: Chuck Short Build-Depends: debhelper (>= 8.0.0), + alembic (>= 0.4.1), python-setuptools, python-all (>= 2.6), python-pbr (>= 0.5.21), @@ -12,6 +13,7 @@ python-eventlet (>= 0.13.0), python-kombu (>= 2.4.8), python-lxml (>= 2.3), + python-lockfile (>= 0.8), python-webob (>= 1.2.3), python-greenlet (>= 0.3.2), python-migrate, @@ -39,16 +41,20 @@ testrepository (>= 0.0.17), python-testtools (>= 0.9.32) Standards-Version: 3.9.4 +Vcs-Browser: http://bazaar.launchpad.net/~ubuntu-server-dev/ironic/icehouse/files +Vcs-Bzr: https://code.launchpad.net/~ubuntu-server-dev/ironic/icehouse Package: python-ironic Architecture: all Depends: ${python:Depends}, ${misc:Depends}, + alembic (>= 0.4.1), python-sqlalchemy (>= 0.7.8), python-amqplib (>= 0.3.3), python-anyjson, python-eventlet (>= 0.13.0), python-kombu (>= 2.4.8), python-lxml (>= 2.3), + python-lockfile (>= 0.8), python-webob (>= 1.2.3), python-greenlet (>= 0.3.2), python-migrate, diff -Nru ironic-2014.1~b3/debian/ironic-api.install ironic-2014.1~rc1/debian/ironic-api.install --- ironic-2014.1~b3/debian/ironic-api.install 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/debian/ironic-api.install 2014-04-04 18:58:50.000000000 +0000 @@ -0,0 +1 @@ +usr/bin/ironic-api diff -Nru ironic-2014.1~b3/debian/ironic-common.install ironic-2014.1~rc1/debian/ironic-common.install --- ironic-2014.1~b3/debian/ironic-common.install 2014-03-06 18:23:41.000000000 +0000 +++ ironic-2014.1~rc1/debian/ironic-common.install 2014-04-04 18:58:50.000000000 +0000 @@ -1,6 +1,8 @@ -usr/bin/ironic-dbsync debian/ironic_sudoers etc/sudoers.d +etc/ironic/ironic.conf etc/ironic etc/ironic/policy.json etc/ironic etc/ironic/rootwrap.conf etc/ironic -usr/bin/ironic-rootwrap etc/ironic/rootwrap.d/ etc/ironic +usr/bin/ironic-dbsync +usr/bin/ironic-rootwrap + diff -Nru ironic-2014.1~b3/debian/ironic-common.postinst ironic-2014.1~rc1/debian/ironic-common.postinst --- ironic-2014.1~b3/debian/ironic-common.postinst 2014-03-06 18:23:41.000000000 +0000 +++ ironic-2014.1~rc1/debian/ironic-common.postinst 2014-04-04 18:58:50.000000000 +0000 @@ -1,6 +1,6 @@ #!/bin/sh -e -if [ "$1" = "configure"] ; then +if [ "$1" = "configure" ] ; then if ! getent group ironic > /dev/null 2>&1; then addgroup --system ironic >/dev/null fi diff -Nru ironic-2014.1~b3/debian/patches/series ironic-2014.1~rc1/debian/patches/series --- ironic-2014.1~b3/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/debian/patches/series 2014-04-04 18:58:50.000000000 +0000 @@ -0,0 +1 @@ +set_logdir.patch diff -Nru ironic-2014.1~b3/debian/patches/set_logdir.patch ironic-2014.1~rc1/debian/patches/set_logdir.patch --- ironic-2014.1~b3/debian/patches/set_logdir.patch 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/debian/patches/set_logdir.patch 2014-04-04 18:58:50.000000000 +0000 @@ -0,0 +1,13 @@ +Index: ironic-2014.1.rc1/etc/ironic/ironic.conf.sample +=================================================================== +--- ironic-2014.1.rc1.orig/etc/ironic/ironic.conf.sample 2014-04-01 12:49:34.000000000 -0700 ++++ ironic-2014.1.rc1/etc/ironic/ironic.conf.sample 2014-04-01 15:52:31.594579356 -0700 +@@ -207,7 +207,7 @@ + # (Optional) The base directory used for relative --log-file + # paths (string value) + # Deprecated group/name - [DEFAULT]/logdir +-#log_dir= ++log_dir=/var/log/ironic/ + + # Use syslog for logging. (boolean value) + #use_syslog=false diff -Nru ironic-2014.1~b3/debian/rules ironic-2014.1~rc1/debian/rules --- ironic-2014.1~b3/debian/rules 2014-03-06 18:23:41.000000000 +0000 +++ ironic-2014.1~rc1/debian/rules 2014-04-04 18:58:50.000000000 +0000 @@ -7,8 +7,12 @@ ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) override_dh_auto_test: - testr init && testr run || true + testr init && testr run --concurrency=1 endif +override_dh_install: + cp etc/ironic/ironic.conf.sample etc/ironic/ironic.conf + dh_install --fail-missing + get-orig-source: uscan --verbose --force-download --rename --destdir=../build-area diff -Nru ironic-2014.1~b3/doc/source/conf.py ironic-2014.1~rc1/doc/source/conf.py --- ironic-2014.1~b3/doc/source/conf.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/conf.py 2014-04-01 19:49:34.000000000 +0000 @@ -11,6 +11,7 @@ 'sphinxcontrib.httpdomain', 'sphinxcontrib.pecanwsme.rest', 'wsmeext.sphinxext', + 'oslosphinx', ] wsme_protocols = ['restjson', 'restxml'] @@ -39,9 +40,9 @@ # The short X.Y version. from ironic import version as ironic_version # The full version, including alpha/beta/rc tags. -release = ironic_version.version_string_with_vcs() +release = ironic_version.version_info.release_string() # The short X.Y version. -version = ironic_version.canonical_version_string() +version = ironic_version.version_info.version_string() # A list of ignored prefixes for module index sorting. modindex_common_prefix = ['ironic.'] @@ -60,9 +61,9 @@ # 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' -html_static_path = ['_static'] +#html_theme_path = ["."] +#html_theme = '_theme' +#html_static_path = ['_static'] # Output file base name for HTML help builder. htmlhelp_basename = '%sdoc' % project diff -Nru ironic-2014.1~b3/doc/source/dev/dev-quickstart.rst ironic-2014.1~rc1/doc/source/dev/dev-quickstart.rst --- ironic-2014.1~b3/doc/source/dev/dev-quickstart.rst 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/dev/dev-quickstart.rst 2014-04-01 19:49:34.000000000 +0000 @@ -15,10 +15,10 @@ Install prerequisites:: # Ubuntu/Debian: - sudo apt-get install python-dev libssl-dev python-pip libmysqlclient-dev libxml2-dev libxslt-dev libpq-dev git git-review + sudo apt-get install python-dev libssl-dev python-pip libmysqlclient-dev libxml2-dev libxslt-dev libpq-dev git git-review libffi-dev # Fedora/RHEL: - sudo yum install python-devel openssl-devel python-pip mysql-devel libxml2-devel libxslt-devel postgresql-devel git git-review + sudo yum install python-devel openssl-devel python-pip mysql-devel libxml2-devel libxslt-devel postgresql-devel git git-review libffi-devel sudo easy_install nose sudo pip install virtualenv setuptools-git flake8 tox testrepository @@ -133,7 +133,7 @@ sed -i "s/#host=.*/host=test-host/" etc/ironic/ironic.conf.local # initialize the ironic database - # this defaults to storing data in ./ironic/openstack/common/db/ironic.sqlite + # this defaults to storing data in ./ironic/ironic.sqlite # If using MySQL, you need to create the initial database # mysql -u root -e "create schema ironic" @@ -160,7 +160,7 @@ You should now be able to interact with Ironic via the python client (installed in the first window) and observe both services' debug outputs in the other two windows. This is a good way to test new features or play with the functionality -without necessarily starting devstack. +without necessarily starting DevStack. To get started, list the available commands and resources:: @@ -205,6 +205,157 @@ with Ctrl-C, and restart them. ================================ +Deploying Ironic with DevStack +================================ + +DevStack may be configured to deploy Ironic, setup Nova to use the Ironic +driver and provide hardware resources (network, baremetal compute nodes) +using a combination of OpenVSwitch and libvirt. It is highly recommended +to deploy on an expendable virtual machine and not on your personal work +station. + +.. seealso:: + + https://devstack.org + +Prepare the system (Ubuntu 12.04):: + + sudo apt-get update + sudo apt-get install python-software-properties git + sudo add-apt-repository cloud-archive:havana + sudo apt-get update + +Clone DevStack:: + + cd ~ + git clone https://github.com/openstack-dev/devstack.git devstack + +Create devstack/localrc with minimal settings required to enable Ironic:: + + cd devstack + cat >localrc < a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.first { -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 0; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.field-list td, table.field-list th { - border: 0 !important; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -/* -- other body styles ----------------------------------------------------- */ - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, .highlight { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.refcount { - color: #060; -} - -.optional { - font-size: 1.3em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -tt.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -tt.descclassname { - background-color: transparent; -} - -tt.xref, a tt { - background-color: transparent; - font-weight: bold; -} - -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { - background-color: transparent; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} diff -Nru ironic-2014.1~b3/doc/source/_static/default.css ironic-2014.1~rc1/doc/source/_static/default.css --- ironic-2014.1~b3/doc/source/_static/default.css 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_static/default.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,230 +0,0 @@ -/** - * Sphinx stylesheet -- default theme - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: sans-serif; - font-size: 100%; - background-color: #11303d; - color: #000; - margin: 0; - padding: 0; -} - -div.document { - background-color: #1c4e63; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 230px; -} - -div.body { - background-color: #ffffff; - color: #000000; - padding: 0 20px 30px 20px; -} - -div.footer { - color: #ffffff; - width: 100%; - padding: 9px 0 9px 0; - text-align: center; - font-size: 75%; -} - -div.footer a { - color: #ffffff; - text-decoration: underline; -} - -div.related { - background-color: #133f52; - line-height: 30px; - color: #ffffff; -} - -div.related a { - color: #ffffff; -} - -div.sphinxsidebar { -} - -div.sphinxsidebar h3 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.4em; - font-weight: normal; - margin: 0; - padding: 0; -} - -div.sphinxsidebar h3 a { - color: #ffffff; -} - -div.sphinxsidebar h4 { - font-family: 'Trebuchet MS', sans-serif; - color: #ffffff; - font-size: 1.3em; - font-weight: normal; - margin: 5px 0 0 0; - padding: 0; -} - -div.sphinxsidebar p { - color: #ffffff; -} - -div.sphinxsidebar p.topless { - margin: 5px 10px 10px 10px; -} - -div.sphinxsidebar ul { - margin: 10px; - padding: 0; - color: #ffffff; -} - -div.sphinxsidebar a { - color: #98dbcc; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #355f7c; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -div.body p, div.body dd, div.body li { - text-align: left; - line-height: 130%; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: 'Trebuchet MS', sans-serif; - background-color: #f2f2f2; - font-weight: normal; - color: #20435c; - border-bottom: 1px solid #ccc; - margin: 20px -20px 10px -20px; - padding: 3px 0 3px 10px; -} - -div.body h1 { margin-top: 0; font-size: 200%; } -div.body h2 { font-size: 160%; } -div.body h3 { font-size: 140%; } -div.body h4 { font-size: 120%; } -div.body h5 { font-size: 110%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #c60f0f; - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - background-color: #c60f0f; - color: white; -} - -div.body p, div.body dd, div.body li { - text-align: left; - line-height: 130%; -} - -div.admonition p.admonition-title + p { - display: inline; -} - -div.admonition p { - margin-bottom: 5px; -} - -div.admonition pre { - margin-bottom: 5px; -} - -div.admonition ul, div.admonition ol { - margin-bottom: 5px; -} - -div.note { - background-color: #eee; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #eee; -} - -div.warning { - background-color: #ffe4e4; - border: 1px solid #f66; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre { - padding: 5px; - background-color: #eeffcc; - color: #333333; - line-height: 120%; - border: 1px solid #ac9; - border-left: none; - border-right: none; -} - -tt { - background-color: #ecf0f3; - padding: 0 1px 0 1px; - font-size: 0.95em; -} - -.warning tt { - background: #efc2c2; -} - -.note tt { - background: #d6d6d6; -} Binary files /tmp/BfiIr_VA78/ironic-2014.1~b3/doc/source/_static/header_bg.jpg and /tmp/qZX5m5SWhw/ironic-2014.1~rc1/doc/source/_static/header_bg.jpg differ Binary files /tmp/BfiIr_VA78/ironic-2014.1~b3/doc/source/_static/header-line.gif and /tmp/qZX5m5SWhw/ironic-2014.1~rc1/doc/source/_static/header-line.gif differ diff -Nru ironic-2014.1~b3/doc/source/_static/jquery.tweet.js ironic-2014.1~rc1/doc/source/_static/jquery.tweet.js --- ironic-2014.1~b3/doc/source/_static/jquery.tweet.js 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_static/jquery.tweet.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,154 +0,0 @@ -(function($) { - - $.fn.tweet = function(o){ - var s = { - username: ["seaofclouds"], // [string] required, unless you want to display our tweets. :) it can be an array, just do ["username1","username2","etc"] - list: null, //[string] optional name of list belonging to username - avatar_size: null, // [integer] height and width of avatar if displayed (48px max) - count: 3, // [integer] how many tweets to display? - intro_text: null, // [string] do you want text BEFORE your your tweets? - outro_text: null, // [string] do you want text AFTER your tweets? - join_text: null, // [string] optional text in between date and tweet, try setting to "auto" - auto_join_text_default: "i said,", // [string] auto text for non verb: "i said" bullocks - auto_join_text_ed: "i", // [string] auto text for past tense: "i" surfed - auto_join_text_ing: "i am", // [string] auto tense for present tense: "i was" surfing - auto_join_text_reply: "i replied to", // [string] auto tense for replies: "i replied to" @someone "with" - auto_join_text_url: "i was looking at", // [string] auto tense for urls: "i was looking at" http:... - loading_text: null, // [string] optional loading text, displayed while tweets load - query: null // [string] optional search query - }; - - if(o) $.extend(s, o); - - $.fn.extend({ - linkUrl: function() { - var returning = []; - var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; - this.each(function() { - returning.push(this.replace(regexp,"$1")); - }); - return $(returning); - }, - linkUser: function() { - var returning = []; - var regexp = /[\@]+([A-Za-z0-9-_]+)/gi; - this.each(function() { - returning.push(this.replace(regexp,"@$1")); - }); - return $(returning); - }, - linkHash: function() { - var returning = []; - var regexp = / [\#]+([A-Za-z0-9-_]+)/gi; - this.each(function() { - returning.push(this.replace(regexp, ' #$1')); - }); - return $(returning); - }, - capAwesome: function() { - var returning = []; - this.each(function() { - returning.push(this.replace(/\b(awesome)\b/gi, '$1')); - }); - return $(returning); - }, - capEpic: function() { - var returning = []; - this.each(function() { - returning.push(this.replace(/\b(epic)\b/gi, '$1')); - }); - return $(returning); - }, - makeHeart: function() { - var returning = []; - this.each(function() { - returning.push(this.replace(/(<)+[3]/gi, "")); - }); - return $(returning); - } - }); - - function relative_time(time_value) { - var parsed_date = Date.parse(time_value); - var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); - var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); - var pluralize = function (singular, n) { - return '' + n + ' ' + singular + (n == 1 ? '' : 's'); - }; - if(delta < 60) { - return 'less than a minute ago'; - } else if(delta < (45*60)) { - return 'about ' + pluralize("minute", parseInt(delta / 60)) + ' ago'; - } else if(delta < (24*60*60)) { - return 'about ' + pluralize("hour", parseInt(delta / 3600)) + ' ago'; - } else { - return 'about ' + pluralize("day", parseInt(delta / 86400)) + ' ago'; - } - } - - function build_url() { - var proto = ('https:' == document.location.protocol ? 'https:' : 'http:'); - if (s.list) { - return proto+"//api.twitter.com/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?"; - } else if (s.query == null && s.username.length == 1) { - return proto+'//twitter.com/status/user_timeline/'+s.username[0]+'.json?count='+s.count+'&callback=?'; - } else { - var query = (s.query || 'from:'+s.username.join('%20OR%20from:')); - return proto+'//search.twitter.com/search.json?&q='+query+'&rpp='+s.count+'&callback=?'; - } - } - - return this.each(function(){ - var list = $('
    ').appendTo(this); - var intro = '

    '+s.intro_text+'

    '; - var outro = '

    '+s.outro_text+'

    '; - var loading = $('

    '+s.loading_text+'

    '); - - if(typeof(s.username) == "string"){ - s.username = [s.username]; - } - - if (s.loading_text) $(this).append(loading); - $.getJSON(build_url(), function(data){ - if (s.loading_text) loading.remove(); - if (s.intro_text) list.before(intro); - $.each((data.results || data), function(i,item){ - // auto join text based on verb tense and content - if (s.join_text == "auto") { - if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) { - var join_text = s.auto_join_text_reply; - } else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) { - var join_text = s.auto_join_text_url; - } else if (item.text.match(/^((\w+ed)|just) .*/im)) { - var join_text = s.auto_join_text_ed; - } else if (item.text.match(/^(\w*ing) .*/i)) { - var join_text = s.auto_join_text_ing; - } else { - var join_text = s.auto_join_text_default; - } - } else { - var join_text = s.join_text; - }; - - var from_user = item.from_user || item.user.screen_name; - var profile_image_url = item.profile_image_url || item.user.profile_image_url; - var join_template = ' '+join_text+' '; - var join = ((s.join_text) ? join_template : ' '); - var avatar_template = ''+from_user+'\'s avatar'; - var avatar = (s.avatar_size ? avatar_template : ''); - var date = ''+relative_time(item.created_at)+''; - var text = '' +$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+ ''; - - // until we create a template option, arrange the items below to alter a tweet's display. - list.append('
  • ' + avatar + date + join + text + '
  • '); - - list.children('li:first').addClass('tweet_first'); - list.children('li:odd').addClass('tweet_even'); - list.children('li:even').addClass('tweet_odd'); - }); - if (s.outro_text) list.after(outro); - }); - - }); - }; -})(jQuery); \ No newline at end of file diff -Nru ironic-2014.1~b3/doc/source/_static/nature.css ironic-2014.1~rc1/doc/source/_static/nature.css --- ironic-2014.1~b3/doc/source/_static/nature.css 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_static/nature.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -/* - * nature.css_t - * ~~~~~~~~~~~~ - * - * Sphinx stylesheet -- nature theme. - * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: Arial, sans-serif; - font-size: 100%; - background-color: #111; - color: #555; - margin: 0; - padding: 0; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 {{ theme_sidebarwidth|toint }}px; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.document { - background-color: #eee; -} - -div.body { - background-color: #ffffff; - color: #3E4349; - padding: 0 30px 30px 30px; - font-size: 0.9em; -} - -div.footer { - color: #555; - width: 100%; - padding: 13px 0; - text-align: center; - font-size: 75%; -} - -div.footer a { - color: #444; - text-decoration: underline; -} - -div.related { - background-color: #6BA81E; - line-height: 32px; - color: #fff; - text-shadow: 0px 1px 0 #444; - font-size: 0.9em; -} - -div.related a { - color: #E2F3CC; -} - -div.sphinxsidebar { - font-size: 0.75em; - line-height: 1.5em; -} - -div.sphinxsidebarwrapper{ - padding: 20px 0; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: Arial, sans-serif; - color: #222; - font-size: 1.2em; - font-weight: normal; - margin: 0; - padding: 5px 10px; - background-color: #ddd; - text-shadow: 1px 1px 0 white -} - -div.sphinxsidebar h4{ - font-size: 1.1em; -} - -div.sphinxsidebar h3 a { - color: #444; -} - - -div.sphinxsidebar p { - color: #888; - padding: 5px 20px; -} - -div.sphinxsidebar p.topless { -} - -div.sphinxsidebar ul { - margin: 10px 20px; - padding: 0; - color: #000; -} - -div.sphinxsidebar a { - color: #444; -} - -div.sphinxsidebar input { - border: 1px solid #ccc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar input[type=text]{ - margin-left: 20px; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #005B81; - text-decoration: none; -} - -a:hover { - color: #E32E00; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: Arial, sans-serif; - background-color: #BED4EB; - font-weight: normal; - color: #212224; - margin: 30px 0px 10px 0px; - padding: 5px 0 5px 10px; - text-shadow: 0px 1px 0 white -} - -div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } -div.body h2 { font-size: 150%; background-color: #C8D5E3; } -div.body h3 { font-size: 120%; background-color: #D8DEE3; } -div.body h4 { font-size: 110%; background-color: #D8DEE3; } -div.body h5 { font-size: 100%; background-color: #D8DEE3; } -div.body h6 { font-size: 100%; background-color: #D8DEE3; } - -a.headerlink { - color: #c60f0f; - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - background-color: #c60f0f; - color: white; -} - -div.body p, div.body dd, div.body li { - line-height: 1.5em; -} - -div.admonition p.admonition-title + p { - display: inline; -} - -div.highlight{ - background-color: white; -} - -div.note { - background-color: #eee; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #eee; -} - -div.warning { - background-color: #ffe4e4; - border: 1px solid #f66; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre { - padding: 10px; - background-color: White; - color: #222; - line-height: 1.2em; - border: 1px solid #C6C9CB; - font-size: 1.1em; - margin: 1.5em 0 1.5em 0; - -webkit-box-shadow: 1px 1px 1px #d8d8d8; - -moz-box-shadow: 1px 1px 1px #d8d8d8; -} - -tt { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ - font-size: 1.1em; - font-family: monospace; -} - -.viewcode-back { - font-family: Arial, sans-serif; -} - -div.viewcode-block:target { - background-color: #f4debf; - border-top: 1px solid #ac9; - border-bottom: 1px solid #ac9; -} Binary files /tmp/BfiIr_VA78/ironic-2014.1~b3/doc/source/_static/openstack_logo.png and /tmp/qZX5m5SWhw/ironic-2014.1~rc1/doc/source/_static/openstack_logo.png differ diff -Nru ironic-2014.1~b3/doc/source/_static/pygments.css ironic-2014.1~rc1/doc/source/_static/pygments.css --- ironic-2014.1~b3/doc/source/_static/pygments.css 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_static/pygments.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #333333 } /* Generic.Output */ -.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ -.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff -Nru ironic-2014.1~b3/doc/source/_static/tweaks.css ironic-2014.1~rc1/doc/source/_static/tweaks.css --- ironic-2014.1~b3/doc/source/_static/tweaks.css 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_static/tweaks.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -body { - background: #fff url(../_static/header_bg.jpg) top left no-repeat; -} - -#header { - width: 950px; - margin: 0 auto; - height: 102px; -} - -#header h1#logo { - background: url(../_static/openstack_logo.png) top left no-repeat; - display: block; - float: left; - text-indent: -9999px; - width: 175px; - height: 55px; -} - -#navigation { - background: url(../_static/header-line.gif) repeat-x 0 bottom; - display: block; - float: left; - margin: 27px 0 0 25px; - padding: 0; -} - -#navigation li{ - float: left; - display: block; - margin-right: 25px; -} - -#navigation li a { - display: block; - font-weight: normal; - text-decoration: none; - background-position: 50% 0; - padding: 20px 0 5px; - color: #353535; - font-size: 14px; -} - -#navigation li a.current, #navigation li a.section { - border-bottom: 3px solid #cf2f19; - color: #cf2f19; -} - -div.related { - background-color: #cde2f8; - border: 1px solid #b0d3f8; -} - -div.related a { - color: #4078ba; - text-shadow: none; -} - -div.sphinxsidebarwrapper { - padding-top: 0; -} - -pre { - color: #555; -} - -div.documentwrapper h1, div.documentwrapper h2, div.documentwrapper h3, div.documentwrapper h4, div.documentwrapper h5, div.documentwrapper h6 { - font-family: 'PT Sans', sans-serif !important; - color: #264D69; - border-bottom: 1px dotted #C5E2EA; - padding: 0; - background: none; - padding-bottom: 5px; -} - -div.documentwrapper h3 { - color: #CF2F19; -} - -a.headerlink { - color: #fff !important; - margin-left: 5px; - background: #CF2F19 !important; -} - -div.body { - margin-top: -25px; - margin-left: 230px; -} - -div.document { - width: 960px; - margin: 0 auto; -} \ No newline at end of file diff -Nru ironic-2014.1~b3/doc/source/_theme/layout.html ironic-2014.1~rc1/doc/source/_theme/layout.html --- ironic-2014.1~b3/doc/source/_theme/layout.html 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_theme/layout.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ -{% extends "basic/layout.html" %} -{% set css_files = css_files + ['_static/tweaks.css'] %} -{% set script_files = script_files + ['_static/jquery.tweet.js'] %} - -{%- macro sidebar() %} - {%- if not embedded %}{% if not theme_nosidebar|tobool %} -
    -
    - {%- block sidebarlogo %} - {%- if logo %} - - {%- endif %} - {%- endblock %} - {%- block sidebartoc %} - {%- if display_toc %} -

    {{ _('Table Of Contents') }}

    - {{ toc }} - {%- endif %} - {%- endblock %} - {%- block sidebarrel %} - {%- if prev %} -

    {{ _('Previous topic') }}

    -

    {{ prev.title }}

    - {%- endif %} - {%- if next %} -

    {{ _('Next topic') }}

    -

    {{ next.title }}

    - {%- endif %} - {%- endblock %} - {%- block sidebarsourcelink %} - {%- if show_source and has_source and sourcename %} -

    {{ _('This Page') }}

    - - {%- endif %} - {%- endblock %} - {%- if customsidebar %} - {% include customsidebar %} - {%- endif %} - {%- block sidebarsearch %} - {%- if pagename != "search" %} - - - {%- endif %} - {%- endblock %} -
    -
    - {%- endif %}{% endif %} -{%- endmacro %} - -{% block relbar1 %}{% endblock relbar1 %} - -{% block header %} - -{% endblock %} \ No newline at end of file diff -Nru ironic-2014.1~b3/doc/source/_theme/theme.conf ironic-2014.1~rc1/doc/source/_theme/theme.conf --- ironic-2014.1~b3/doc/source/_theme/theme.conf 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/_theme/theme.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -[theme] -inherit = basic -stylesheet = nature.css -pygments_style = tango diff -Nru ironic-2014.1~b3/doc/source/webapi/v1.rst ironic-2014.1~rc1/doc/source/webapi/v1.rst --- ironic-2014.1~b3/doc/source/webapi/v1.rst 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/doc/source/webapi/v1.rst 2014-04-01 19:49:34.000000000 +0000 @@ -58,36 +58,6 @@ :members: -NodePowerState -============== - -The 'rest-controller' directive of this resource seems to be crashing -sphinxcontrib-pecanwsme with "CRITICAL ironic [-] list index out of range" -errors. - -.. autotype:: ironic.api.controllers.v1.node.NodePowerState - :members: - - -NodeProvisionState -================== - -The 'rest-controller' directive of this resource seems to be crashing -sphinxcontrib-pecanwsme with "CRITICAL ironic [-] list index out of range" -errors. - -.. autotype:: ironic.api.controllers.v1.node.NodeProvisionState - :members: - - -NodeVendorPassthru -================== - -The 'rest-controller' directive of this resource seems to be crashing -sphinxcontrib-pecanwsme with "CRITICAL ironic [-] list index out of range" -errors. - - Ports ===== diff -Nru ironic-2014.1~b3/etc/ironic/ironic.conf.sample ironic-2014.1~rc1/etc/ironic/ironic.conf.sample --- ironic-2014.1~b3/etc/ironic/ironic.conf.sample 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/etc/ironic/ironic.conf.sample 2014-04-01 19:49:34.000000000 +0000 @@ -39,12 +39,13 @@ # partitions is (2^hash_partition_exponent). (integer value) #hash_partition_exponent=16 -# Number of hosts to map onto each hash partition. Setting -# this to more than one will cause additional conductor -# services to prepare deployment environments and potentially -# allow the Ironic cluster to recover more quickly if a -# conductor instance is terminated. (integer value) -#hash_distribution_replicas=2 +# [Experimental Feature] Number of hosts to map onto each hash +# partition. Setting this to more than one will cause +# additional conductor services to prepare deployment +# environments and potentially allow the Ironic cluster to +# recover more quickly if a conductor instance is terminated. +# (integer value) +#hash_distribution_replicas=1 # @@ -113,17 +114,6 @@ # -# Options defined in ironic.openstack.common.db.sqlalchemy.session -# - -# The file name to use with SQLite (string value) -#sqlite_db=ironic.sqlite - -# If True, SQLite uses synchronous mode (boolean value) -#sqlite_synchronous=true - - -# # Options defined in ironic.openstack.common.eventlet_backdoor # @@ -503,6 +493,11 @@ # (boolean value) #force_power_state_during_sync=true +# During sync_power_state failures, limit the number of times +# Ironic should try syncing the hardware node power state with +# the node power state in DB (integer value) +#power_state_sync_max_retries=3 + [database] @@ -515,33 +510,30 @@ # -# Options defined in ironic.openstack.common.db.api +# Options defined in ironic.openstack.common.db.options # +# The file name to use with SQLite (string value) +#sqlite_db=ironic.sqlite + +# If True, SQLite uses synchronous mode (boolean value) +#sqlite_synchronous=true + # The backend to use for db (string value) # Deprecated group/name - [DEFAULT]/db_backend #backend=sqlalchemy -# Enable the experimental use of thread pooling for all DB API -# calls (boolean value) -# Deprecated group/name - [DEFAULT]/dbapi_use_tpool -#use_tpool=false - - -# -# Options defined in ironic.openstack.common.db.sqlalchemy.session -# - # The SQLAlchemy connection string used to connect to the # database (string value) # Deprecated group/name - [DEFAULT]/sql_connection # Deprecated group/name - [DATABASE]/sql_connection # Deprecated group/name - [sql]/connection -#connection=sqlite:////ironic/openstack/common/db/$sqlite_db +#connection= -# The SQLAlchemy connection string used to connect to the -# slave database (string value) -#slave_connection= +# The SQL mode to be used for MySQL sessions (default is +# empty, meaning do not override any server-side SQL mode +# setting) (string value) +#mysql_sql_mode= # Timeout before idle sql connections are reaped (integer # value) @@ -595,6 +587,25 @@ # Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout #pool_timeout= +# Enable the experimental use of database reconnect on +# connection lost (boolean value) +#use_db_reconnect=false + +# seconds between db connection retries (integer value) +#db_retry_interval=1 + +# Whether to increase interval between db connection retries, +# up to db_max_retry_interval (boolean value) +#db_inc_retry_interval=true + +# max seconds between db connection retries, if +# db_inc_retry_interval is enabled (integer value) +#db_max_retry_interval=10 + +# maximum db connection retries before error is raised. +# (setting -1 implies an infinite retry count) (integer value) +#db_max_retries=20 + [glance] @@ -622,7 +633,7 @@ # https for SSL. (string value) #glance_protocol=http -# A list of the glance api servers available to nova. Prefix +# A list of the glance api servers available to ironic. Prefix # with https:// for SSL-based glance API servers. Format is # [hostname|IP]:port. (string value) #glance_api_servers= @@ -648,7 +659,7 @@ # Maximum time in seconds to retry IPMI operations. (integer # value) -#retry_timeout=10 +#retry_timeout=60 [keystone_authtoken] @@ -692,12 +703,6 @@ # with Identity API Server. (integer value) #http_request_max_retries=3 -# Allows to pass in the name of a fake http_handler callback -# function used instead of httplib.HTTPConnection or -# httplib.HTTPSConnection. Useful for unit testing where -# network is not available. (string value) -#http_handler= - # Single shared secret with the Keystone configuration used # for bootstrapping a Keystone installation, or otherwise # bypassing the normal authentication process. (string value) @@ -735,20 +740,24 @@ # value) #signing_dir= -# If defined, the memcache server(s) to use for caching (list -# value) +# Optionally specify a list of memcached server(s) to use for +# caching. If left undefined, tokens will instead be cached +# in-process. (list value) # Deprecated group/name - [DEFAULT]/memcache_servers #memcached_servers= -# In order to prevent excessive requests and validations, the -# middleware uses an in-memory cache for the tokens the -# Keystone API returns. This is only valid if memcache_servers -# is defined. Set to -1 to disable caching completely. -# (integer value) +# In order to prevent excessive effort spent validating +# tokens, the middleware caches previously-seen tokens for a +# configurable duration (in seconds). Set to -1 to disable +# caching completely. (integer value) #token_cache_time=300 -# Value only used for unit testing (integer value) -#revocation_cache_time=1 +# Determines the frequency at which the list of revoked tokens +# is retrieved from the Identity service (in seconds). A high +# number of revocation events combined with a low cache +# duration may significantly reduce performance. (integer +# value) +#revocation_cache_time=300 # (optional) if defined, indicate whether token data should be # authenticated or authenticated and encrypted. Acceptable diff -Nru ironic-2014.1~b3/ironic/api/controllers/base.py ironic-2014.1~rc1/ironic/api/controllers/base.py --- ironic-2014.1~b3/ironic/api/controllers/base.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/base.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,47 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# 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 wsme +from wsme import types as wtypes + + +class APIBase(wtypes.Base): + + created_at = wsme.wsattr(datetime.datetime, readonly=True) + "The time in UTC at which the object is created" + + updated_at = wsme.wsattr(datetime.datetime, readonly=True) + "The time in UTC at which the object is updated" + + def as_dict(self): + """Render this object as a dict of its fields.""" + return dict((k, getattr(self, k)) + for k in self.fields + if hasattr(self, k) and + getattr(self, k) != wsme.Unset) + + def unset_fields_except(self, except_list=None): + """Unset fields so they don't appear in the message body. + + :param except_list: A list of fields that won't be touched. + + """ + if except_list is None: + except_list = [] + + for k in self.as_dict(): + if k not in except_list: + setattr(self, k, wsme.Unset) diff -Nru ironic-2014.1~b3/ironic/api/controllers/link.py ironic-2014.1~rc1/ironic/api/controllers/link.py --- ironic-2014.1~b3/ironic/api/controllers/link.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/link.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,43 @@ +# 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. + +from wsme import types as wtypes + +from ironic.api.controllers import base + + +class Link(base.APIBase): + """A link representation.""" + + href = wtypes.text + "The url of a link." + + rel = wtypes.text + "The name of a link." + + type = wtypes.text + "Indicates the type of document/link." + + @classmethod + def make_link(cls, rel_name, url, resource, resource_args, + bookmark=False, type=wtypes.Unset): + template = '%s/%s' if bookmark else '%s/v1/%s' + # FIXME(lucasagomes): I'm getting a 404 when doing a GET on + # a nested resource that the URL ends with a '/'. + # https://groups.google.com/forum/#!topic/pecan-dev/QfSeviLg5qs + template += '%s' if resource_args.startswith('?') else '/%s' + + return Link(href=(template) % (url, resource, resource_args), + rel=rel_name, type=type) diff -Nru ironic-2014.1~b3/ironic/api/controllers/root.py ironic-2014.1~rc1/ironic/api/controllers/root.py --- ironic-2014.1~b3/ironic/api/controllers/root.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/root.py 2014-04-01 19:49:34.000000000 +0000 @@ -22,9 +22,9 @@ from wsme import types as wtypes import wsmeext.pecan as wsme_pecan +from ironic.api.controllers import base +from ironic.api.controllers import link from ironic.api.controllers import v1 -from ironic.api.controllers.v1 import base -from ironic.api.controllers.v1 import link class Version(base.APIBase): diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/base.py ironic-2014.1~rc1/ironic/api/controllers/v1/base.py --- ironic-2014.1~b3/ironic/api/controllers/v1/base.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/base.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# 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 wsme -from wsme import types as wtypes - - -class APIBase(wtypes.Base): - - created_at = wsme.wsattr(datetime.datetime, readonly=True) - "The time in UTC at which the object is created" - - updated_at = wsme.wsattr(datetime.datetime, readonly=True) - "The time in UTC at which the object is updated" - - def as_dict(self): - """Render this object as a dict of its fields.""" - return dict((k, getattr(self, k)) - for k in self.fields - if hasattr(self, k) and - getattr(self, k) != wsme.Unset) - - def unset_fields_except(self, except_list=None): - """Unset fields so they don't appear in the message body. - - :param except_list: A list of fields that won't be touched. - - """ - if except_list is None: - except_list = [] - - for k in self.as_dict(): - if k not in except_list: - setattr(self, k, wsme.Unset) diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/chassis.py ironic-2014.1~rc1/ironic/api/controllers/v1/chassis.py --- ironic-2014.1~b3/ironic/api/controllers/v1/chassis.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/chassis.py 2014-04-01 19:49:34.000000000 +0000 @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. +import datetime import jsonpatch import six @@ -23,18 +24,14 @@ from wsme import types as wtypes import wsmeext.pecan as wsme_pecan -from ironic.api.controllers.v1 import base +from ironic.api.controllers import base +from ironic.api.controllers import link from ironic.api.controllers.v1 import collection -from ironic.api.controllers.v1 import link from ironic.api.controllers.v1 import node from ironic.api.controllers.v1 import types from ironic.api.controllers.v1 import utils as api_utils from ironic.common import exception from ironic import objects -from ironic.openstack.common import excutils -from ironic.openstack.common import log - -LOG = log.getLogger(__name__) class ChassisPatchType(types.JsonPatchType): @@ -70,30 +67,43 @@ setattr(self, k, kwargs.get(k)) @classmethod - def convert_with_links(cls, rpc_chassis, expand=True): - chassis = Chassis(**rpc_chassis.as_dict()) + def _convert_with_links(cls, chassis, url, expand=True): if not expand: chassis.unset_fields_except(['uuid', 'description']) else: chassis.nodes = [link.Link.make_link('self', - pecan.request.host_url, + url, 'chassis', chassis.uuid + "/nodes"), link.Link.make_link('bookmark', - pecan.request.host_url, + url, 'chassis', chassis.uuid + "/nodes", bookmark=True) ] chassis.links = [link.Link.make_link('self', - pecan.request.host_url, + url, 'chassis', chassis.uuid), link.Link.make_link('bookmark', - pecan.request.host_url, + url, 'chassis', chassis.uuid) ] return chassis + @classmethod + def convert_with_links(cls, rpc_chassis, expand=True): + chassis = Chassis(**rpc_chassis.as_dict()) + return cls._convert_with_links(chassis, pecan.request.host_url, + expand) + + @classmethod + def sample(cls, expand=True): + time = datetime.datetime(2000, 1, 1, 12, 0, 0) + sample = cls(uuid='eaaca217-e7d8-47b4-bb41-3f99f20eed89', extra={}, + description='Sample chassis', created_at=time) + return cls._convert_with_links(sample, 'http://localhost:6385', + expand) + class ChassisCollection(collection.Collection): """API representation of a collection of chassis.""" @@ -114,6 +124,12 @@ collection.next = collection.get_next(limit, url=url, **kwargs) return collection + @classmethod + def sample(cls, expand=True): + sample = cls() + sample.chassis = [Chassis.sample(expand=False)] + return sample + class ChassisController(rest.RestController): """REST controller for Chassis.""" @@ -190,11 +206,8 @@ :param chassis: a chassis within the request body. """ - try: - new_chassis = pecan.request.dbapi.create_chassis(chassis.as_dict()) - except Exception as e: - with excutils.save_and_reraise_exception(): - LOG.exception(e) + new_chassis = pecan.request.dbapi.create_chassis(chassis.as_dict()) + return Chassis.convert_with_links(new_chassis) @wsme.validate(types.uuid, [ChassisPatchType]) diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/collection.py ironic-2014.1~rc1/ironic/api/controllers/v1/collection.py --- ironic-2014.1~b3/ironic/api/controllers/v1/collection.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/collection.py 2014-04-01 19:49:34.000000000 +0000 @@ -16,8 +16,8 @@ import pecan from wsme import types as wtypes -from ironic.api.controllers.v1 import base -from ironic.api.controllers.v1 import link +from ironic.api.controllers import base +from ironic.api.controllers import link class Collection(base.APIBase): diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/driver.py ironic-2014.1~rc1/ironic/api/controllers/v1/driver.py --- ironic-2014.1~b3/ironic/api/controllers/v1/driver.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/driver.py 2014-04-01 19:49:34.000000000 +0000 @@ -16,13 +16,13 @@ import pecan from pecan import rest +import wsme from wsme import types as wtypes import wsmeext.pecan as wsme_pecan -from ironic.api.controllers.v1 import base -from ironic.openstack.common import log - -LOG = log.getLogger(__name__) +from ironic.api.controllers import base +from ironic.api.controllers import link +from ironic.common import exception class Driver(base.APIBase): @@ -34,13 +34,31 @@ hosts = [wtypes.text] "A list of active conductors that support this driver" + links = wsme.wsattr([link.Link], readonly=True) + "A list containing self and bookmark links" + @classmethod - def convert(cls, name, hosts): + def convert_with_links(cls, name, hosts): driver = Driver() driver.name = name driver.hosts = hosts + driver.links = [ + link.Link.make_link('self', + pecan.request.host_url, + 'drivers', name), + link.Link.make_link('bookmark', + pecan.request.host_url, + 'drivers', name, + bookmark=True) + ] return driver + @classmethod + def sample(cls): + sample = cls(name="sample-driver", + hosts=["fake-host"]) + return sample + class DriverList(base.APIBase): """API representation of a list of drivers.""" @@ -49,12 +67,19 @@ "A list containing drivers objects" @classmethod - def convert(cls, drivers): + def convert_with_links(cls, drivers): collection = DriverList() - collection.drivers = [Driver.convert(dname, list(drivers[dname])) - for dname in drivers] + collection.drivers = [ + Driver.convert_with_links(dname, list(drivers[dname])) + for dname in drivers] return collection + @classmethod + def sample(cls): + sample = cls() + sample.drivers = [Driver.sample()] + return sample + class DriversController(rest.RestController): """REST controller for Drivers.""" @@ -68,4 +93,20 @@ # This is a result of a bug in sphinxcontrib-pecanwsme # https://github.com/dreamhost/sphinxcontrib-pecanwsme/issues/8 driver_list = pecan.request.dbapi.get_active_driver_dict() - return DriverList.convert(driver_list) + return DriverList.convert_with_links(driver_list) + + @wsme_pecan.wsexpose(Driver, wtypes.text) + def get_one(self, driver_name): + """Retrieve a single driver. + """ + # NOTE(russell_h): There is no way to make this more efficient than + # retrieving a list of drivers using the current sqlalchemy schema, but + # this path must be exposed for Pecan to route any paths we might + # choose to expose below it. + + driver_dict = pecan.request.dbapi.get_active_driver_dict() + for name, hosts in driver_dict.iteritems(): + if name == driver_name: + return Driver.convert_with_links(name, list(hosts)) + + raise exception.DriverNotFound(driver_name=driver_name) diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/__init__.py ironic-2014.1~rc1/ironic/api/controllers/v1/__init__.py --- ironic-2014.1~b3/ironic/api/controllers/v1/__init__.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/__init__.py 2014-04-01 19:49:34.000000000 +0000 @@ -28,10 +28,10 @@ from wsme import types as wtypes import wsmeext.pecan as wsme_pecan -from ironic.api.controllers.v1 import base +from ironic.api.controllers import base +from ironic.api.controllers import link from ironic.api.controllers.v1 import chassis from ironic.api.controllers.v1 import driver -from ironic.api.controllers.v1 import link from ironic.api.controllers.v1 import node from ironic.api.controllers.v1 import port diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/link.py ironic-2014.1~rc1/ironic/api/controllers/v1/link.py --- ironic-2014.1~b3/ironic/api/controllers/v1/link.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/link.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -# 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. - -from wsme import types as wtypes - -from ironic.api.controllers.v1 import base - - -class Link(base.APIBase): - """A link representation.""" - - href = wtypes.text - "The url of a link." - - rel = wtypes.text - "The name of a link." - - type = wtypes.text - "Indicates the type of document/link." - - @classmethod - def make_link(cls, rel_name, url, resource, resource_args, - bookmark=False, type=wtypes.Unset): - template = '%s/%s' if bookmark else '%s/v1/%s' - # FIXME(lucasagomes): I'm getting a 404 when doing a GET on - # a nested resource that the URL ends with a '/'. - # https://groups.google.com/forum/#!topic/pecan-dev/QfSeviLg5qs - template += '%s' if resource_args.startswith('?') else '/%s' - - return Link(href=(template) % (url, resource, resource_args), - rel=rel_name, type=type) diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/node.py ironic-2014.1~rc1/ironic/api/controllers/v1/node.py --- ironic-2014.1~b3/ironic/api/controllers/v1/node.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/node.py 2014-04-01 19:49:34.000000000 +0000 @@ -24,9 +24,9 @@ from wsme import types as wtypes import wsmeext.pecan as wsme_pecan -from ironic.api.controllers.v1 import base +from ironic.api.controllers import base +from ironic.api.controllers import link from ironic.api.controllers.v1 import collection -from ironic.api.controllers.v1 import link from ironic.api.controllers.v1 import port from ironic.api.controllers.v1 import types from ironic.api.controllers.v1 import utils as api_utils @@ -34,16 +34,12 @@ from ironic.common import states as ir_states from ironic.common import utils from ironic import objects -from ironic.openstack.common import excutils -from ironic.openstack.common import log CONF = cfg.CONF CONF.import_opt('heartbeat_timeout', 'ironic.conductor.manager', group='conductor') -LOG = log.getLogger(__name__) - class NodePatchType(types.JsonPatchType): @@ -114,6 +110,17 @@ setattr(states, attr, getattr(rpc_node, attr)) return states + @classmethod + def sample(cls): + sample = cls(target_power_state=ir_states.POWER_ON, + target_provision_state=ir_states.ACTIVE, + last_error=None, + console_enabled=False, + provision_updated_at=None, + power_state=ir_states.POWER_ON, + provision_state=None) + return sample + class NodeStatesController(rest.RestController): @@ -191,16 +198,24 @@ rpc_node = objects.Node.get_by_uuid(pecan.request.context, node_uuid) topic = pecan.request.rpcapi.get_topic_for(rpc_node) - if rpc_node.target_provision_state is not None: - msg = _('Node %s is already being provisioned.') % rpc_node['uuid'] - LOG.exception(msg) - raise wsme.exc.ClientSideError(msg, status_code=409) # Conflict - if target == rpc_node.provision_state: msg = (_("Node %(node)s is already in the '%(state)s' state.") % {'node': rpc_node['uuid'], 'state': target}) - LOG.exception(msg) raise wsme.exc.ClientSideError(msg, status_code=400) + + if target == ir_states.ACTIVE: + processing = rpc_node.target_provision_state is not None + elif target == ir_states.DELETED: + processing = (rpc_node.target_provision_state is not None and + rpc_node.provision_state != ir_states.DEPLOYWAIT) + else: + raise exception.InvalidStateRequested(state=target, node=node_uuid) + + if processing: + msg = (_('Node %s is already being provisioned or decommissioned.') + % rpc_node.uuid) + raise wsme.exc.ClientSideError(msg, status_code=409) # Conflict + # Note that there is a race condition. The node state(s) could change # by the time the RPC call is made and the TaskManager manager gets a # lock. @@ -211,8 +226,6 @@ elif target == ir_states.DELETED: pecan.request.rpcapi.do_node_tear_down( pecan.request.context, node_uuid, topic) - else: - raise exception.InvalidStateRequested(state=target, node=node_uuid) # FIXME(lucasagomes): Currently WSME doesn't support returning # the Location header. Once it's implemented we should use the # Location to point to the /states subresource of this node so @@ -605,11 +618,8 @@ e.code = 400 raise e - try: - new_node = pecan.request.dbapi.create_node(node.as_dict()) - except Exception as e: - with excutils.save_and_reraise_exception(): - LOG.exception(e) + new_node = pecan.request.dbapi.create_node(node.as_dict()) + return Node.convert_with_links(new_node) @wsme.validate(types.uuid, [NodePatchType]) @@ -656,12 +666,8 @@ e.code = 400 raise e - try: - new_node = pecan.request.rpcapi.update_node( - pecan.request.context, rpc_node, topic) - except Exception as e: - with excutils.save_and_reraise_exception(): - LOG.exception(e) + new_node = pecan.request.rpcapi.update_node( + pecan.request.context, rpc_node, topic) return Node.convert_with_links(new_node) diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/port.py ironic-2014.1~rc1/ironic/api/controllers/v1/port.py --- ironic-2014.1~b3/ironic/api/controllers/v1/port.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/port.py 2014-04-01 19:49:34.000000000 +0000 @@ -23,17 +23,13 @@ from wsme import types as wtypes import wsmeext.pecan as wsme_pecan -from ironic.api.controllers.v1 import base +from ironic.api.controllers import base +from ironic.api.controllers import link from ironic.api.controllers.v1 import collection -from ironic.api.controllers.v1 import link from ironic.api.controllers.v1 import types from ironic.api.controllers.v1 import utils as api_utils from ironic.common import exception from ironic import objects -from ironic.openstack.common import excutils -from ironic.openstack.common import log - -LOG = log.getLogger(__name__) class PortPatchType(types.JsonPatchType): @@ -252,11 +248,8 @@ if self._from_nodes: raise exception.OperationNotPermitted - try: - new_port = pecan.request.dbapi.create_port(port.as_dict()) - except Exception as e: - with excutils.save_and_reraise_exception(): - LOG.exception(e) + new_port = pecan.request.dbapi.create_port(port.as_dict()) + return Port.convert_with_links(new_port) @wsme.validate(types.uuid, [PortPatchType]) @@ -282,8 +275,14 @@ if rpc_port[field] != getattr(port, field): rpc_port[field] = getattr(port, field) - rpc_port.save() - return Port.convert_with_links(rpc_port) + rpc_node = objects.Node.get_by_uuid(pecan.request.context, + rpc_port.node_id) + topic = pecan.request.rpcapi.get_topic_for(rpc_node) + + new_port = pecan.request.rpcapi.update_port( + pecan.request.context, rpc_port, topic) + + return Port.convert_with_links(new_port) @wsme_pecan.wsexpose(None, types.uuid, status_code=204) def delete(self, port_uuid): diff -Nru ironic-2014.1~b3/ironic/api/controllers/v1/state.py ironic-2014.1~rc1/ironic/api/controllers/v1/state.py --- ironic-2014.1~b3/ironic/api/controllers/v1/state.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/controllers/v1/state.py 2014-04-01 19:49:34.000000000 +0000 @@ -15,8 +15,8 @@ from wsme import types as wtypes -from ironic.api.controllers.v1 import base -from ironic.api.controllers.v1 import link +from ironic.api.controllers import base +from ironic.api.controllers import link class State(base.APIBase): diff -Nru ironic-2014.1~b3/ironic/api/hooks.py ironic-2014.1~rc1/ironic/api/hooks.py --- ironic-2014.1~b3/ironic/api/hooks.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/hooks.py 2014-04-01 19:49:34.000000000 +0000 @@ -21,7 +21,6 @@ from webob import exc from ironic.common import context -from ironic.common import utils from ironic.conductor import rpcapi from ironic.db import api as dbapi from ironic.openstack.common import policy @@ -75,11 +74,9 @@ auth_token = state.request.headers.get('X-Auth-Token') creds = {'roles': state.request.headers.get('X-Roles', '').split(',')} + is_public_api = state.request.environ.get('is_public_api', False) is_admin = policy.check('admin', state.request.headers, creds) - path = utils.safe_rstrip(state.request.path, '/') - is_public_api = path in self.public_api_routes - state.request.context = context.RequestContext( auth_token=auth_token, user=user_id, @@ -125,17 +122,20 @@ # catches and handles all the errors, so 'on_error' dedicated for unhandled # exceptions never fired. def after(self, state): - # Do not remove traceback when server in debug mode. - if cfg.CONF.debug: + # Omit empty body. Some errors may not have body at this level yet. + if not state.response.body: return + # Do nothing if there is no error. if 200 <= state.response.status_int < 400: return - # Omit empty body. Some errors may not have body at this level yet. - if not state.response.body: - return json_body = state.response.json + # Do not remove traceback when server in debug mode (except 'Server' + # errors when 'debuginfo' will be used for traces). + if cfg.CONF.debug and json_body.get('faultcode') != 'Server': + return + faultsting = json_body.get('faultstring') traceback_marker = 'Traceback (most recent call last):' if faultsting and (traceback_marker in faultsting): diff -Nru ironic-2014.1~b3/ironic/api/middleware/auth_token.py ironic-2014.1~rc1/ironic/api/middleware/auth_token.py --- ironic-2014.1~b3/ironic/api/middleware/auth_token.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/api/middleware/auth_token.py 2014-04-01 19:49:34.000000000 +0000 @@ -12,9 +12,15 @@ # License for the specific language governing permissions and limitations # under the License. +import re + from keystoneclient.middleware import auth_token +from ironic.common import exception from ironic.common import utils +from ironic.openstack.common import log + +LOG = log.getLogger(__name__) class AuthTokenMiddleware(auth_token.AuthProtocol): @@ -25,14 +31,29 @@ """ def __init__(self, app, conf, public_api_routes=[]): - self.public_api_routes = set(public_api_routes) + route_pattern_tpl = '%s(\.json|\.xml)?$' + + try: + self.public_api_routes = [re.compile(route_pattern_tpl % route_tpl) + for route_tpl in public_api_routes] + except re.error as e: + msg = _('Cannot compile public API routes: %s') % e + + LOG.error(msg) + raise exception.ConfigInvalid(error_msg=msg) super(AuthTokenMiddleware, self).__init__(app, conf) def __call__(self, env, start_response): path = utils.safe_rstrip(env.get('PATH_INFO'), '/') - if path in self.public_api_routes: + # The information whether the API call is being performed against the + # public API is required for some other components. Saving it to the + # WSGI environment is reasonable thereby. + env['is_public_api'] = any(map(lambda pattern: re.match(pattern, path), + self.public_api_routes)) + + if env['is_public_api']: return self.app(env, start_response) return super(AuthTokenMiddleware, self).__call__(env, start_response) diff -Nru ironic-2014.1~b3/ironic/cmd/conductor.py ironic-2014.1~rc1/ironic/cmd/conductor.py --- ironic-2014.1~b3/ironic/cmd/conductor.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/cmd/conductor.py 2014-04-01 19:49:34.000000000 +0000 @@ -26,7 +26,6 @@ from ironic.openstack.common import service from ironic.common import service as ironic_service -from ironic.conductor import manager CONF = cfg.CONF @@ -35,6 +34,8 @@ # Pase config file and command line options, then start logging ironic_service.prepare_service(sys.argv) - mgr = manager.ConductorManager(CONF.host, manager.MANAGER_TOPIC) + mgr = ironic_service.load_manager('ironic.conductor.manager', + 'ConductorManager', + CONF.host) launcher = service.launch(mgr) launcher.wait() diff -Nru ironic-2014.1~b3/ironic/common/config.py ironic-2014.1~rc1/ironic/common/config.py --- ironic-2014.1~b3/ironic/common/config.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/config.py 2014-04-01 19:49:34.000000000 +0000 @@ -17,19 +17,13 @@ from oslo.config import cfg -from ironic.common import paths -from ironic.openstack.common.db.sqlalchemy import session as db_session from ironic.openstack.common import rpc from ironic import version -_DEFAULT_SQL_CONNECTION = 'sqlite:///' + paths.state_path_def('$sqlite_db') - def parse_args(argv, default_config_files=None): - db_session.set_defaults(sql_connection=_DEFAULT_SQL_CONNECTION, - sqlite_db='ironic.sqlite') rpc.set_defaults(control_exchange='ironic') cfg.CONF(argv[1:], project='ironic', - version=version.version_string(), + version=version.version_info.release_string(), default_config_files=default_config_files) diff -Nru ironic-2014.1~b3/ironic/common/exception.py ironic-2014.1~rc1/ironic/common/exception.py --- ironic-2014.1~b3/ironic/common/exception.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/exception.py 2014-04-01 19:49:34.000000000 +0000 @@ -201,6 +201,10 @@ message = _("Update DHCP options on port: %(port_id)s failed.") +class FailedToUpdateMacOnPort(IronicException): + message = _("Update MAC address on port: %(port_id)s failed.") + + class ChassisNotFound(NotFound): message = _("Chassis %(chassis)s could not be found.") @@ -349,3 +353,7 @@ class VendorPassthruException(IronicException): pass + + +class ConfigInvalid(IronicException): + message = _("Invalid configuration file. %(error_msg)s") diff -Nru ironic-2014.1~b3/ironic/common/hash_ring.py ironic-2014.1~rc1/ironic/common/hash_ring.py --- ironic-2014.1~b3/ironic/common/hash_ring.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/hash_ring.py 2014-04-01 19:49:34.000000000 +0000 @@ -30,8 +30,9 @@ 'load when rebalancing the ring, but more memory usage. ' 'Number of partitions is (2^hash_partition_exponent).'), cfg.IntOpt('hash_distribution_replicas', - default=2, - help='Number of hosts to map onto each hash partition. ' + default=1, + help='[Experimental Feature] ' + 'Number of hosts to map onto each hash partition. ' 'Setting this to more than one will cause additional ' 'conductor services to prepare deployment environments ' 'and potentially allow the Ironic cluster to recover ' diff -Nru ironic-2014.1~b3/ironic/common/image_service.py ironic-2014.1~rc1/ironic/common/image_service.py --- ironic-2014.1~b3/ironic/common/image_service.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/image_service.py 2014-04-01 19:49:34.000000000 +0000 @@ -32,7 +32,7 @@ help='Default protocol to use when connecting to glance. ' 'Set to https for SSL.'), cfg.StrOpt('glance_api_servers', - help='A list of the glance api servers available to nova. ' + help='A list of the glance api servers available to ironic. ' 'Prefix with https:// for SSL-based glance API servers. ' 'Format is [hostname|IP]:port.'), cfg.BoolOpt('glance_api_insecure', diff -Nru ironic-2014.1~b3/ironic/common/keystone.py ironic-2014.1~rc1/ironic/common/keystone.py --- ironic-2014.1~b3/ironic/common/keystone.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/keystone.py 2014-04-01 19:49:34.000000000 +0000 @@ -25,7 +25,10 @@ def get_service_url(service_type='baremetal', endpoint_type='internal'): """Wrapper for get service url from keystone service catalog.""" - auth_url = CONF.keystone_authtoken.auth_uri or '' + auth_url = CONF.keystone_authtoken.auth_uri + if not auth_url: + raise exception.CatalogFailure(_('Keystone API endpoint is missing')) + api_v3 = CONF.keystone_authtoken.auth_version == 'v3.0' or \ 'v3' in parse.urlparse(auth_url).path @@ -34,6 +37,10 @@ else: from keystoneclient.v2_0 import client + api_version = 'v3' if api_v3 else 'v2.0' + # NOTE(lucasagomes): Get rid of the trailing '/' otherwise urljoin() + # fails to override the version in the URL + auth_url = parse.urljoin(auth_url.rstrip('/'), api_version) try: ksclient = client.Client(username=CONF.keystone_authtoken.admin_user, password=CONF.keystone_authtoken.admin_password, diff -Nru ironic-2014.1~b3/ironic/common/neutron.py ironic-2014.1~rc1/ironic/common/neutron.py --- ironic-2014.1~b3/ironic/common/neutron.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/neutron.py 2014-04-01 19:49:34.000000000 +0000 @@ -90,3 +90,18 @@ except neutron_client_exc.NeutronClientException: LOG.exception(_("Failed to update Neutron port %s."), port_id) raise exception.FailedToUpdateDHCPOptOnPort(port_id=port_id) + + def update_port_address(self, port_id, address): + """Update a port's mac address. + + :param port_id: Neutron port id. + :param address: new MAC address. + :raises: FailedToUpdateMacOnPort + """ + port_req_body = {'port': {'mac_address': address}} + try: + self.client.update_port(port_id, port_req_body) + except neutron_client_exc.NeutronClientException: + LOG.exception(_("Failed to update MAC address on Neutron port %s." + ), port_id) + raise exception.FailedToUpdateMacOnPort(port_id=port_id) diff -Nru ironic-2014.1~b3/ironic/common/service.py ironic-2014.1~rc1/ironic/common/service.py --- ironic-2014.1~b3/ironic/common/service.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/service.py 2014-04-01 19:49:34.000000000 +0000 @@ -20,10 +20,11 @@ from oslo.config import cfg +from ironic.common import config from ironic.openstack.common import context +from ironic.openstack.common import importutils from ironic.openstack.common import log from ironic.openstack.common import periodic_task -from ironic.openstack.common import rpc from ironic.openstack.common.rpc import service as rpc_service @@ -48,20 +49,28 @@ def start(self): super(PeriodicService, self).start() admin_context = context.RequestContext('admin', 'admin', is_admin=True) - self.tg.add_timer(cfg.CONF.periodic_interval, - self.manager.periodic_tasks, - context=admin_context) + self.tg.add_dynamic_timer( + self.manager.periodic_tasks, + periodic_interval_max=cfg.CONF.periodic_interval, + context=admin_context) def prepare_service(argv=[]): - rpc.set_defaults(control_exchange='ironic') + config.parse_args(argv) cfg.set_defaults(log.log_opts, default_log_levels=['amqplib=WARN', 'qpid.messaging=INFO', 'sqlalchemy=WARN', 'keystoneclient=INFO', 'stevedore=INFO', - 'eventlet.wsgi.server=WARN' + 'eventlet.wsgi.server=WARN', + 'iso8601=WARN', + 'paramiko=WARN', ]) - cfg.CONF(argv[1:], project='ironic') log.setup('ironic') + + +def load_manager(manager_modulename, manager_classname, host): + manager_module = importutils.import_module(manager_modulename) + manager_class = getattr(manager_module, manager_classname) + return manager_class(host, manager_module.MANAGER_TOPIC) diff -Nru ironic-2014.1~b3/ironic/common/utils.py ironic-2014.1~rc1/ironic/common/utils.py --- ironic-2014.1~b3/ironic/common/utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/common/utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -86,10 +86,23 @@ try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + key_contents = connection.get('key_contents') + if key_contents: + data = six.moves.StringIO(key_contents) + if "BEGIN RSA PRIVATE" in key_contents: + pkey = paramiko.RSAKey.from_private_key(data) + elif "BEGIN DSA PRIVATE" in key_contents: + pkey = paramiko.DSSKey.from_private_key(data) + else: + # Can't include the key contents - secure material. + raise ValueError(_("Invalid private key")) + else: + pkey = None ssh.connect(connection.get('host'), username=connection.get('username'), password=connection.get('password'), port=connection.get('port', 22), + pkey=pkey, key_filename=connection.get('key_filename'), timeout=connection.get('timeout', 10)) diff -Nru ironic-2014.1~b3/ironic/conductor/manager.py ironic-2014.1~rc1/ironic/conductor/manager.py --- ironic-2014.1~b3/ironic/conductor/manager.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/conductor/manager.py 2014-04-01 19:49:34.000000000 +0000 @@ -41,6 +41,7 @@ a change, etc. """ +import collections import datetime from eventlet import greenpool @@ -50,6 +51,7 @@ from ironic.common import driver_factory from ironic.common import exception from ironic.common import hash_ring as hash +from ironic.common import neutron from ironic.common import service from ironic.common import states from ironic.conductor import task_manager @@ -60,6 +62,7 @@ from ironic.openstack.common import lockutils from ironic.openstack.common import log from ironic.openstack.common import periodic_task +from ironic.openstack.common.rpc import common as messaging from ironic.openstack.common import timeutils MANAGER_TOPIC = 'ironic.conductor_manager' @@ -98,72 +101,30 @@ 'state be set to the state recorded in the database ' '(True) or should the database be updated based on ' 'the hardware state (False).'), + cfg.IntOpt('power_state_sync_max_retries', + default=3, + help='During sync_power_state failures, limit the ' + 'number of times Ironic should try syncing the ' + 'hardware node power state with the node power state ' + 'in DB') ] CONF = cfg.CONF CONF.register_opts(conductor_opts, 'conductor') -def _do_sync_power_state(task): - node = task.node - - try: - power_state = task.driver.power.get_power_state(task, node) - except Exception as e: - # TODO(rloo): change to IronicException, after - # https://bugs.launchpad.net/ironic/+bug/1267693 - LOG.warning(_("During sync_power_state, could not get power state for " - "node %(node)s. Error: %(err)s."), - {'node': node.uuid, 'err': e}) - return - - if node.power_state is None: - LOG.info(_("During sync_power_state, node %(node)s has no previous " - "known state. Recording current state '%(state)s'."), - {'node': node.uuid, 'state': power_state}) - node.power_state = power_state - node.save(task.context) - - if power_state == node.power_state: - return - - if CONF.conductor.force_power_state_during_sync: - LOG.warning(_("During sync_power_state, node %(node)s state " - "'%(actual)s' does not match expected state. " - "Changing hardware state to '%(state)s'."), - {'node': node.uuid, 'actual': power_state, - 'state': node.power_state}) - try: - # node_power_action will update the node record - # so don't do that again here. - utils.node_power_action(task, task.node, - node.power_state) - except Exception as e: - # TODO(rloo): change to IronicException after - # https://bugs.launchpad.net/ironic/+bug/1267693 - LOG.error(_("Failed to change power state of node %(node)s " - "to '%(state)s'."), {'node': node.uuid, - 'state': node.power_state}) - else: - LOG.warning(_("During sync_power_state, node %(node)s state " - "does not match expected state '%(state)s'. " - "Updating recorded state to '%(actual)s'."), - {'node': node.uuid, 'actual': power_state, - 'state': node.power_state}) - node.power_state = power_state - node.save(task.context) - - class ConductorManager(service.PeriodicService): """Ironic Conductor service main class.""" - RPC_API_VERSION = '1.11' + RPC_API_VERSION = '1.13' def __init__(self, host, topic): serializer = objects_base.IronicObjectSerializer() super(ConductorManager, self).__init__(host, topic, serializer=serializer) + self.power_state_sync_count = collections.defaultdict(int) + def start(self): super(ConductorManager, self).start() self.dbapi = dbapi.get_instance() @@ -193,7 +154,9 @@ self._worker_pool = greenpool.GreenPool(size=CONF.rpc_thread_pool_size) """GreenPool of background workers for performing tasks async.""" - # TODO(deva): add stop() to call unregister_conductor + def stop(self): + self.dbapi.unregister_conductor(self.host) + super(ConductorManager, self).stop() def initialize_service_hook(self, service): pass @@ -207,6 +170,9 @@ """Periodic tasks are run at pre-specified interval.""" return self.run_periodic_tasks(context, raise_on_error=raise_on_error) + @messaging.client_exceptions(exception.InvalidParameterValue, + exception.NodeLocked, + exception.NodeInWrongPowerState) def update_node(self, context, node_obj): """Update a node with the supplied data. @@ -247,6 +213,8 @@ return node_obj + @messaging.client_exceptions(exception.NoFreeConductorWorker, + exception.NodeLocked) def change_node_power_state(self, context, node_id, new_state): """RPC method to encapsulate changes to a node's state. @@ -279,59 +247,84 @@ # Release node lock if error occurred. task.release_resources() - # NOTE(deva): There is a race condition in the RPC API for vendor_passthru. - # Between the validate_vendor_action and do_vendor_action calls, it's - # possible another conductor instance may acquire a lock, or change the - # state of the node, such that validate() succeeds but do() fails. - # TODO(deva): Implement an intent lock to prevent this race. Do this after - # we have implemented intelligent RPC routing so that the do() will be - # guaranteed to land on the same conductor instance that performed - # validate(). - def validate_vendor_action(self, context, node_id, driver_method, info): - """Validate driver specific info or get driver status.""" + @messaging.client_exceptions(exception.NoFreeConductorWorker, + exception.NodeLocked, + exception.InvalidParameterValue, + exception.UnsupportedDriverExtension) + def vendor_passthru(self, context, node_id, driver_method, info): + """RPC method to encapsulate vendor action. + + Synchronously validate driver specific info or get driver status, + and if successful, start background worker to perform vendor action + asynchronously. + + :param context: an admin context. + :param node_id: the id or uuid of a node. + :param driver_method: the name of the vendor method. + :param info: vendor method args. + :raises: InvalidParameterValue if supplied info is not valid. + :raises: UnsupportedDriverExtension if current driver does not have + vendor interface or method is unsupported. + :raises: NoFreeConductorWorker when there is no free worker to start + async task. - LOG.debug(_("RPC validate_vendor_action called for node %s.") + """ + LOG.debug(_("RPC vendor_passthru called for node %s.") % node_id) - with task_manager.acquire(context, node_id, shared=True) as task: - try: - if getattr(task.driver, 'vendor', None): - return task.driver.vendor.validate(task, task.node, - method=driver_method, - **info) - else: - raise exception.UnsupportedDriverExtension( - driver=task.node.driver, - extension='vendor passthru') - except Exception as e: - with excutils.save_and_reraise_exception(): - task.node.last_error = \ - _("Failed to validate vendor info. Error: %s") % e - task.node.save(context) + # NOTE(max_lobur): Even though not all vendor_passthru calls may + # require an exclusive lock, we need to do so to guarantee that the + # state doesn't unexpectedly change between doing a vendor.validate + # and vendor.vendor_passthru. + task = task_manager.TaskManager(context, node_id, shared=False) - def do_vendor_action(self, context, node_id, driver_method, info): - """Run driver action asynchronously.""" + try: + if not getattr(task.driver, 'vendor', None): + raise exception.UnsupportedDriverExtension( + driver=task.node.driver, + extension='vendor passthru') - with task_manager.acquire(context, node_id, shared=True) as task: - task.driver.vendor.vendor_passthru(task, task.node, - method=driver_method, **info) + task.driver.vendor.validate(task, task.node, method=driver_method, + **info) + # Start requested action in the background. + thread = self._spawn_worker(task.driver.vendor.vendor_passthru, + task, task.node, method=driver_method, + **info) + # Release node lock at the end of async action. + thread.link(lambda t: task.release_resources()) + except Exception: + with excutils.save_and_reraise_exception(): + # Release node lock if error occurred. + task.release_resources() + @messaging.client_exceptions(exception.NoFreeConductorWorker, + exception.NodeLocked, + exception.NodeInMaintenance, + exception.InstanceDeployFailure) def do_node_deploy(self, context, node_id): """RPC method to initiate deployment to a node. + Initiate the deployment of a node. Validations are done + synchronously and the actual deploy work is performed in + background (asynchronously). + :param context: an admin context. :param node_id: the id or uuid of a node. :raises: InstanceDeployFailure + :raises: NodeInMaintenance if the node is in maintenance mode. + :raises: NoFreeConductorWorker when there is no free worker to start + async task. """ LOG.debug(_("RPC do_node_deploy called for node %s.") % node_id) - with task_manager.acquire(context, node_id, shared=False) as task: - node = task.node - if node['provision_state'] is not states.NOSTATE: + task = task_manager.TaskManager(context, node_id, shared=False) + node = task.node + try: + if node.provision_state is not states.NOSTATE: raise exception.InstanceDeployFailure(_( "RPC do_node_deploy called for %(node)s, but provision " "state is already %(state)s.") % - {'node': node_id, 'state': node['provision_state']}) + {'node': node.uuid, 'state': node.provision_state}) if node.maintenance: raise exception.NodeInMaintenance(op=_('provisioning'), @@ -339,100 +332,224 @@ try: task.driver.deploy.validate(task, node) - except Exception as e: - with excutils.save_and_reraise_exception(): - node['last_error'] = \ - _("Failed to validate deploy info. Error: %s") % e - else: - # set target state to expose that work is in progress - node['provision_state'] = states.DEPLOYING - node['target_provision_state'] = states.DEPLOYDONE - node['last_error'] = None - finally: - node.save(context) + except exception.InvalidParameterValue as e: + raise exception.InstanceDeployFailure(_( + "RPC do_node_deploy failed to validate deploy info. " + "Error: %(msg)s") % {'msg': e}) - try: - task.driver.deploy.prepare(task, node) - new_state = task.driver.deploy.deploy(task, node) - except Exception as e: - with excutils.save_and_reraise_exception(): - node['last_error'] = _("Failed to deploy. Error: %s") % e - node['provision_state'] = states.DEPLOYFAIL - node['target_provision_state'] = states.NOSTATE - else: - # NOTE(deva): Some drivers may return states.DEPLOYWAIT - # eg. if they are waiting for a callback - if new_state == states.DEPLOYDONE: - node['target_provision_state'] = states.NOSTATE - node['provision_state'] = states.ACTIVE - else: - node['provision_state'] = new_state - finally: - node.save(context) + # Set target state to expose that work is in progress + node.provision_state = states.DEPLOYING + node.target_provision_state = states.DEPLOYDONE + node.last_error = None + node.save(context) + + # Start requested action in the background. + thread = self._spawn_worker(self._do_node_deploy, context, task) + # Release node lock at the end. + thread.link(lambda t: task.release_resources()) + except Exception: + with excutils.save_and_reraise_exception(): + # Release node lock if error occurred. + task.release_resources() + def _do_node_deploy(self, context, task): + """Prepare the environment and deploy a node.""" + node = task.node + try: + task.driver.deploy.prepare(task, node) + new_state = task.driver.deploy.deploy(task, node) + except Exception as e: + with excutils.save_and_reraise_exception(): + node.last_error = _("Failed to deploy. Error: %s") % e + node.provision_state = states.DEPLOYFAIL + node.target_provision_state = states.NOSTATE + else: + # NOTE(deva): Some drivers may return states.DEPLOYWAIT + # eg. if they are waiting for a callback + if new_state == states.DEPLOYDONE: + node.target_provision_state = states.NOSTATE + node.provision_state = states.ACTIVE + else: + node.provision_state = new_state + finally: + node.save(context) + + @messaging.client_exceptions(exception.NoFreeConductorWorker, + exception.NodeLocked, + exception.InstanceDeployFailure) def do_node_tear_down(self, context, node_id): """RPC method to tear down an existing node deployment. + Validate driver specific information synchronously, and then + spawn a background worker to tear down the node asynchronously. + :param context: an admin context. :param node_id: the id or uuid of a node. :raises: InstanceDeployFailure + :raises: NoFreeConductorWorker when there is no free worker to start + async task """ LOG.debug(_("RPC do_node_tear_down called for node %s.") % node_id) - with task_manager.acquire(context, node_id, shared=False) as task: - node = task.node - if node['provision_state'] not in [states.ACTIVE, - states.DEPLOYFAIL, - states.ERROR, - states.DEPLOYWAIT]: + task = task_manager.TaskManager(context, node_id, shared=False) + node = task.node + try: + if node.provision_state not in [states.ACTIVE, + states.DEPLOYFAIL, + states.ERROR, + states.DEPLOYWAIT]: raise exception.InstanceDeployFailure(_( - "RCP do_node_tear_down " + "RPC do_node_tear_down " "not allowed for node %(node)s in state %(state)s") - % {'node': node_id, 'state': node['provision_state']}) + % {'node': node_id, 'state': node.provision_state}) try: task.driver.deploy.validate(task, node) - except Exception as e: - with excutils.save_and_reraise_exception(): - node['last_error'] = \ - ("Failed to validate info for teardown. Error: %s") % e - else: - # set target state to expose that work is in progress - node['provision_state'] = states.DELETING - node['target_provision_state'] = states.DELETED - node['last_error'] = None - finally: - node.save(context) + except exception.InvalidParameterValue as e: + raise exception.InstanceDeployFailure(_( + "RPC do_node_tear_down failed to validate deploy info. " + "Error: %(msg)s") % {'msg': e}) - try: - task.driver.deploy.clean_up(task, node) - new_state = task.driver.deploy.tear_down(task, node) - except Exception as e: - with excutils.save_and_reraise_exception(): - node['last_error'] = \ - _("Failed to tear down. Error: %s") % e - node['provision_state'] = states.ERROR - node['target_provision_state'] = states.NOSTATE + node.provision_state = states.DELETING + node.target_provision_state = states.DELETED + node.last_error = None + node.save(context) + + # Start requested action in the background. + thread = self._spawn_worker(self._do_node_tear_down, context, task) + + # Release node lock at the end. + thread.link(lambda t: task.release_resources()) + + except Exception: + with excutils.save_and_reraise_exception(): + # Release node lock if error occurred. + task.release_resources() + + def _do_node_tear_down(self, context, task): + """Internal RPC method to tear down an existing node deployment.""" + node = task.node + try: + task.driver.deploy.clean_up(task, node) + new_state = task.driver.deploy.tear_down(task, node) + except Exception as e: + with excutils.save_and_reraise_exception(): + node.last_error = _("Failed to tear down. Error: %s") % e + node.provision_state = states.ERROR + node.target_provision_state = states.NOSTATE + else: + # NOTE(deva): Some drivers may return states.DELETING + # eg. if they are waiting for a callback + if new_state == states.DELETED: + node.target_provision_state = states.NOSTATE + node.provision_state = states.NOSTATE else: - # NOTE(deva): Some drivers may return states.DELETING - # eg. if they are waiting for a callback - if new_state == states.DELETED: - node['target_provision_state'] = states.NOSTATE - node['provision_state'] = states.NOSTATE - else: - node['provision_state'] = new_state - finally: - node.save(context) + node.provision_state = new_state + finally: + node.save(context) @periodic_task.periodic_task(spacing=CONF.conductor.heartbeat_interval) def _conductor_service_record_keepalive(self, context): self.dbapi.touch_conductor(self.host) + def _handle_sync_power_state_max_retries_exceeded(self, task, + actual_power_state): + node = task.node + msg = (_("During sync_power_state, max retries exceeded " + "for node %(node)s, node state %(actual)s " + "does not match expected state '%(state)s'. " + "Updating DB state to '%(actual)s' " + "Switching node to maintenance mode."), + {'node': node.uuid, 'actual': actual_power_state, + 'state': node.power_state}) + node.power_state = actual_power_state + node.last_error = msg + node.maintenance = True + node.save(task.context) + LOG.error(msg) + + def _do_sync_power_state(self, task): + node = task.node + power_state = None + + try: + power_state = task.driver.power.get_power_state(task, node) + except Exception as e: + # TODO(rloo): change to IronicException, after + # https://bugs.launchpad.net/ironic/+bug/1267693 + LOG.warning(_("During sync_power_state, could not get power " + "state for node %(node)s. Error: %(err)s."), + {'node': node.uuid, 'err': e}) + self.power_state_sync_count[node.uuid] += 1 + + if (self.power_state_sync_count[node.uuid] >= + CONF.conductor.power_state_sync_max_retries): + self._handle_sync_power_state_max_retries_exceeded(task, + power_state) + return + + if node.power_state is None: + LOG.info(_("During sync_power_state, node %(node)s has no " + "previous known state. Recording current state " + "'%(state)s'."), + {'node': node.uuid, 'state': power_state}) + node.power_state = power_state + node.save(task.context) + + if power_state == node.power_state: + if node.uuid in self.power_state_sync_count: + del self.power_state_sync_count[node.uuid] + return + + if not CONF.conductor.force_power_state_during_sync: + LOG.warning(_("During sync_power_state, node %(node)s state " + "does not match expected state '%(state)s'. " + "Updating recorded state to '%(actual)s'."), + {'node': node.uuid, 'actual': power_state, + 'state': node.power_state}) + node.power_state = power_state + node.save(task.context) + return + + if (self.power_state_sync_count[node.uuid] >= + CONF.conductor.power_state_sync_max_retries): + self._handle_sync_power_state_max_retries_exceeded(task, + power_state) + return + + # Force actual power_state of node equal to DB power_state of node + LOG.warning(_("During sync_power_state, node %(node)s state " + "'%(actual)s' does not match expected state. " + "Changing hardware state to '%(state)s'."), + {'node': node.uuid, 'actual': power_state, + 'state': node.power_state}) + try: + # node_power_action will update the node record + # so don't do that again here. + utils.node_power_action(task, task.node, + node.power_state) + except Exception as e: + # TODO(rloo): change to IronicException after + # https://bugs.launchpad.net/ironic/+bug/1267693 + LOG.error(_("Failed to change power state of node %(node)s " + "to '%(state)s'."), {'node': node.uuid, + 'state': node.power_state}) + attempts_left = (CONF.conductor.power_state_sync_max_retries - + self.power_state_sync_count[node.uuid]) - 1 + msg = (_("%(left)s attempts remaining to " + "sync_power_state for node %(node)s"), + {'left': attempts_left, + 'node': node.uuid}) + LOG.warning(msg) + finally: + # Update power state sync count for current node + self.power_state_sync_count[node.uuid] += 1 + @periodic_task.periodic_task( spacing=CONF.conductor.sync_power_state_interval) def _sync_power_states(self, context): - filters = {'reserved': False} + filters = {'reserved': False, 'maintenance': False} columns = ['id', 'uuid', 'driver'] node_list = self.dbapi.get_nodeinfo_list(columns=columns, filters=filters) @@ -449,7 +566,7 @@ continue with task_manager.acquire(context, node_id) as task: - _do_sync_power_state(task) + self._do_sync_power_state(task) except exception.NodeNotFound: LOG.info(_("During sync_power_state, node %(node)s was not " @@ -523,6 +640,7 @@ # TODO(deva): implement this pass + @messaging.client_exceptions(exception.NodeLocked) def validate_driver_interfaces(self, context, node_id): """Validate the `core` and `standardized` interfaces for drivers. @@ -544,7 +662,8 @@ try: iface.validate(task, task.node) result = True - except exception.InvalidParameterValue as e: + except (exception.InvalidParameterValue, + exception.UnsupportedDriverExtension) as e: result = False reason = str(e) else: @@ -556,6 +675,8 @@ ret_dict[iface_name]['reason'] = reason return ret_dict + @messaging.client_exceptions(exception.NodeLocked, + exception.NodeMaintenanceFailure) def change_node_maintenance_mode(self, context, node_id, mode): """Set node maintenance mode on or off. @@ -599,6 +720,9 @@ else: raise exception.NoFreeConductorWorker() + @messaging.client_exceptions(exception.NodeLocked, + exception.NodeAssociated, + exception.NodeInWrongPowerState) def destroy_node(self, context, node_id): """Delete a node. @@ -622,6 +746,10 @@ self.dbapi.destroy_node(node_id) + @messaging.client_exceptions(exception.NodeLocked, + exception.UnsupportedDriverExtension, + exception.NodeConsoleNotEnabled, + exception.InvalidParameterValue) def get_console_information(self, context, node_id): """Get connection information about the console. @@ -647,9 +775,16 @@ task.driver.console.validate(task, node) return task.driver.console.get_console(task, node) + @messaging.client_exceptions(exception.NoFreeConductorWorker, + exception.NodeLocked, + exception.UnsupportedDriverExtension, + exception.InvalidParameterValue) def set_console_mode(self, context, node_id, enabled): """Enable/Disable the console. + Validate driver specific information synchronously, and then + spawn a background worker to set console mode asynchronously. + :param context: request context. :param node_id: node id or uuid. :param enabled: Boolean value; whether the console is enabled or @@ -657,14 +792,17 @@ :raises: UnsupportedDriverExtension if the node's driver doesn't support console. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: NoFreeConductorWorker when there is no free worker to start + async task """ LOG.debug(_('RPC set_console_mode called for node %(node)s with ' 'enabled %(enabled)s') % {'node': node_id, 'enabled': enabled}) - with task_manager.acquire(context, node_id) as task: - node = task.node + task = task_manager.TaskManager(context, node_id, shared=False) + node = task.node + try: if not getattr(task.driver, 'console', None): exc = exception.UnsupportedDriverExtension(driver=node.driver, extension='console') @@ -672,33 +810,77 @@ node.save(context) raise exc - try: - task.driver.console.validate(task, node) - except exception.InvalidParameterValue as e: - with excutils.save_and_reraise_exception(): - node.last_error = (_("Failed to validate console info. " - "Error: %s") % e) - node.save(context) + task.driver.console.validate(task, node) - try: - if enabled and not node.console_enabled: - task.driver.console.start_console(task, node) - elif not enabled and node.console_enabled: - task.driver.console.stop_console(task, node) - else: - op = _('enabled') if enabled else _('disabled') - LOG.info(_("No console action was triggered because the " - "console is already %s") % op) - except Exception as e: - with excutils.save_and_reraise_exception(): - op = _('enabling') if enabled else _('disabling') - msg = (_('Error %(op)s the console on node %(node)s. ' - 'Reason: %(error)s') % {'op': op, - 'node': node.uuid, - 'error': e}) - node.last_error = msg + if enabled == node.console_enabled: + op = _('enabled') if enabled else _('disabled') + LOG.info(_("No console action was triggered because the " + "console is already %s") % op) else: - node.console_enabled = enabled node.last_error = None - finally: node.save(context) + + # Start the requested action in the background. + thread = self._spawn_worker(self._set_console_mode, + task, enabled) + # Release node lock at the end. + thread.link(lambda t: task.release_resources()) + + except Exception: + with excutils.save_and_reraise_exception(): + # Release node lock if error occurred. + task.release_resources() + + def _set_console_mode(self, task, enabled): + """Internal method to set console mode on a node.""" + node = task.node + try: + if enabled: + task.driver.console.start_console(task, node) + else: + task.driver.console.stop_console(task, node) + except Exception as e: + with excutils.save_and_reraise_exception(): + op = _('enabling') if enabled else _('disabling') + msg = (_('Error %(op)s the console on node %(node)s. ' + 'Reason: %(error)s') % {'op': op, + 'node': node.uuid, + 'error': e}) + node.last_error = msg + else: + node.console_enabled = enabled + node.last_error = None + finally: + node.save(task.context) + + @messaging.client_exceptions(exception.NodeLocked, + exception.FailedToUpdateMacOnPort) + def update_port(self, context, port_obj): + """Update a port. + + :param context: request context. + :param port_obj: a changed (but not saved) port object. + :raises: FailedToUpdateMacOnPort if MAC address changed and update + Neutron failed. + """ + port_uuid = port_obj.uuid + LOG.debug(_("RPC update_port called for port %s."), port_uuid) + + with task_manager.acquire(context, port_obj.node_id) as task: + node = task.node + if 'address' in port_obj.obj_what_changed(): + vif = port_obj.extra.get('vif_port_id') + if vif: + api = neutron.NeutronAPI(context) + api.update_port_address(vif, port_obj.address) + # Log warning if there is no vif_port_id and an instance + # is associated with the node. + elif node.instance_uuid: + LOG.warning(_("No VIF found for instance %(instance)s " + "port %(port)s when attempting to update Neutron " + "port MAC address."), + {'port': port_uuid, 'instance': node.instance_uuid}) + + port_obj.save(context) + + return port_obj diff -Nru ironic-2014.1~b3/ironic/conductor/rpcapi.py ironic-2014.1~rc1/ironic/conductor/rpcapi.py --- ironic-2014.1~b3/ironic/conductor/rpcapi.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/conductor/rpcapi.py 2014-04-01 19:49:34.000000000 +0000 @@ -57,10 +57,13 @@ 1.9 - Added destroy_node. 1.10 - Remove get_node_power_state 1.11 - Added get_console_information, set_console_mode. + 1.12 - validate_vendor_action, do_vendor_action replaced by single + vendor_passthru method. + 1.13 - Added update_port. """ - RPC_API_VERSION = '1.11' + RPC_API_VERSION = '1.13' def __init__(self, topic=None): if topic is None: @@ -138,36 +141,28 @@ def vendor_passthru(self, context, node_id, driver_method, info, topic=None): - """Pass vendor specific info to a node driver. + """Synchronously, acquire lock, validate given parameters and start + the conductor background task for specified vendor action. :param context: request context. :param node_id: node id or uuid. :param driver_method: name of method for driver. :param info: info for node driver. :param topic: RPC topic. Defaults to self.topic. - :raises: InvalidParameterValue for parameter errors. - :raises: UnsupportedDriverExtension for unsupported extensions. + :raises: InvalidParameterValue if supplied info is not valid. + :raises: UnsupportedDriverExtension if current driver does not have + vendor interface. + :raises: NoFreeConductorWorker when there is no free worker to start + async task. """ topic = topic or self.topic - - driver_data = self.call(context, - self.make_msg('validate_vendor_action', - node_id=node_id, - driver_method=driver_method, - info=info), - topic=topic) - - # this method can do nothing if 'driver_method' intended only - # for obtain 'driver_data' - self.cast(context, - self.make_msg('do_vendor_action', - node_id=node_id, - driver_method=driver_method, - info=info), - topic=topic) - - return driver_data + return self.call(context, + self.make_msg('vendor_passthru', + node_id=node_id, + driver_method=driver_method, + info=info), + topic=topic) def do_node_deploy(self, context, node_id, topic=None): """Signal to conductor service to perform a deployment. @@ -175,15 +170,19 @@ :param context: request context. :param node_id: node id or uuid. :param topic: RPC topic. Defaults to self.topic. + :raises: InstanceDeployFailure + :raises: InvalidParameterValue if validation fails + :raises: NoFreeConductorWorker when there is no free worker to start + async task. The node must already be configured and in the appropriate undeployed state before this method is called. """ - self.cast(context, - self.make_msg('do_node_deploy', - node_id=node_id), - topic=topic or self.topic) + return self.call(context, + self.make_msg('do_node_deploy', + node_id=node_id), + topic=topic or self.topic) def do_node_tear_down(self, context, node_id, topic=None): """Signal to conductor service to tear down a deployment. @@ -191,15 +190,19 @@ :param context: request context. :param node_id: node id or uuid. :param topic: RPC topic. Defaults to self.topic. + :raises: InstanceDeployFailure + :raises: InvalidParameterValue if validation fails + :raises: NoFreeConductorWorker when there is no free worker to start + async task. The node must already be configured and in the appropriate deployed state before this method is called. """ - self.cast(context, - self.make_msg('do_node_tear_down', - node_id=node_id), - topic=topic or self.topic) + return self.call(context, + self.make_msg('do_node_tear_down', + node_id=node_id), + topic=topic or self.topic) def validate_driver_interfaces(self, context, node_id, topic=None): """Validate the `core` and `standardized` interfaces for drivers. @@ -275,9 +278,29 @@ :raises: UnsupportedDriverExtension if the node's driver doesn't support console. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: NoFreeConductorWorker when there is no free worker to start + async task. + """ + return self.call(context, + self.make_msg('set_console_mode', + node_id=node_id, + enabled=enabled), + topic=topic or self.topic) + + def update_port(self, context, port_obj, topic=None): + """Synchronously, have a conductor update the port's information. + + Update the port's information in the database and return a port object. + The conductor will lock related node and trigger specific driver + actions if they are needed. + + :param context: request context. + :param port_obj: a changed (but not saved) port object. + :param topic: RPC topic. Defaults to self.topic. + :returns: updated port object, including all fields. + """ - self.cast(context, - self.make_msg('set_console_mode', - node_id=node_id, - enabled=enabled), - topic=topic or self.topic) + return self.call(context, + self.make_msg('update_port', + port_obj=port_obj), + topic=topic or self.topic) diff -Nru ironic-2014.1~b3/ironic/conductor/utils.py ironic-2014.1~rc1/ironic/conductor/utils.py --- ironic-2014.1~b3/ironic/conductor/utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/conductor/utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -22,6 +22,28 @@ @task_manager.require_exclusive_lock +def node_set_boot_device(task, node, device, persistent=False): + """Set the boot device for a node. + + :param task: a TaskManager instance. + :param node: The Node. + :param device: Boot device. Values are vendor-specific. + :param persistent: Whether to set next-boot, or make the change + permanent. Default: False. + + """ + try: + task.driver.vendor.vendor_passthru(task, node, + device=device, + persistent=persistent, + method='set_boot_device') + except exception.UnsupportedDriverExtension: + # NOTE(deva): Some drivers, like SSH, do not support set_boot_device. + # This is not a fatal exception. + pass + + +@task_manager.require_exclusive_lock def node_power_action(task, node, state): """Change power state or reset for a node. diff -Nru ironic-2014.1~b3/ironic/db/api.py ironic-2014.1~rc1/ironic/db/api.py --- ironic-2014.1~b3/ironic/db/api.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/db/api.py 2014-04-01 19:49:34.000000000 +0000 @@ -19,12 +19,18 @@ import abc +from oslo.config import cfg import six from ironic.openstack.common.db import api as db_api +CONF = cfg.CONF +CONF.import_opt('backend', 'ironic.openstack.common.db.options', + group='database') + _BACKEND_MAPPING = {'sqlalchemy': 'ironic.db.sqlalchemy.api'} -IMPL = db_api.DBAPI(backend_mapping=_BACKEND_MAPPING) +IMPL = db_api.DBAPI(CONF.database.backend, backend_mapping=_BACKEND_MAPPING, + lazy=True) def get_instance(): diff -Nru ironic-2014.1~b3/ironic/db/migration.py ironic-2014.1~rc1/ironic/db/migration.py --- ironic-2014.1~b3/ironic/db/migration.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/db/migration.py 2014-04-01 19:49:34.000000000 +0000 @@ -22,7 +22,7 @@ CONF = cfg.CONF CONF.import_opt('backend', - 'ironic.openstack.common.db.api', + 'ironic.openstack.common.db.options', group='database') IMPL = utils.LazyPluggable( diff -Nru ironic-2014.1~b3/ironic/db/sqlalchemy/alembic/env.py ironic-2014.1~rc1/ironic/db/sqlalchemy/alembic/env.py --- ironic-2014.1~b3/ironic/db/sqlalchemy/alembic/env.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/db/sqlalchemy/alembic/env.py 2014-04-01 19:49:34.000000000 +0000 @@ -14,8 +14,8 @@ from alembic import context +from ironic.db.sqlalchemy import api as sqla_api from ironic.db.sqlalchemy import models -import ironic.openstack.common.db.sqlalchemy.session as sqlalchemy_session # this is the Alembic Config object, which provides # access to the values within the .ini file in use. @@ -43,7 +43,7 @@ and associate a connection with the context. """ - engine = sqlalchemy_session.get_engine() + engine = sqla_api.get_engine() with engine.connect() as connection: context.configure(connection=connection, target_metadata=target_metadata) diff -Nru ironic-2014.1~b3/ironic/db/sqlalchemy/api.py ironic-2014.1~rc1/ironic/db/sqlalchemy/api.py --- ironic-2014.1~b3/ironic/db/sqlalchemy/api.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/db/sqlalchemy/api.py 2014-04-01 19:49:34.000000000 +0000 @@ -23,12 +23,14 @@ from sqlalchemy.orm.exc import NoResultFound from ironic.common import exception +from ironic.common import paths from ironic.common import states from ironic.common import utils from ironic.db import api from ironic.db.sqlalchemy import models from ironic import objects from ironic.openstack.common.db import exception as db_exc +from ironic.openstack.common.db import options as db_options from ironic.openstack.common.db.sqlalchemy import session as db_session from ironic.openstack.common.db.sqlalchemy import utils as db_utils from ironic.openstack.common import log @@ -36,7 +38,7 @@ CONF = cfg.CONF CONF.import_opt('connection', - 'ironic.openstack.common.db.sqlalchemy.session', + 'ironic.openstack.common.db.options', group='database') CONF.import_opt('heartbeat_timeout', 'ironic.conductor.manager', @@ -44,8 +46,31 @@ LOG = log.getLogger(__name__) -get_engine = db_session.get_engine -get_session = db_session.get_session +_DEFAULT_SQL_CONNECTION = 'sqlite:///' + paths.state_path_def('ironic.sqlite') +db_options.set_defaults(_DEFAULT_SQL_CONNECTION, 'ironic.sqlite') + + +_FACADE = None + + +def _create_facade_lazily(): + global _FACADE + if _FACADE is None: + _FACADE = db_session.EngineFacade( + CONF.database.connection, + **dict(CONF.database.iteritems()) + ) + return _FACADE + + +def get_engine(): + facade = _create_facade_lazily() + return facade.get_engine() + + +def get_session(**kwargs): + facade = _create_facade_lazily() + return facade.get_session(**kwargs) def get_backend(): @@ -407,7 +432,6 @@ query = model_query(models.Port, session=session) query = add_port_filter(query, port_id) ref = query.one() - _check_port_change_forbidden(ref, session) ref.update(values) except NoResultFound: raise exception.PortNotFound(port=port_id) diff -Nru ironic-2014.1~b3/ironic/db/sqlalchemy/migration.py ironic-2014.1~rc1/ironic/db/sqlalchemy/migration.py --- ironic-2014.1~b3/ironic/db/sqlalchemy/migration.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/db/sqlalchemy/migration.py 2014-04-01 19:49:34.000000000 +0000 @@ -20,7 +20,7 @@ from alembic import config as alembic_config import alembic.migration as alembic_migration -from ironic.openstack.common.db.sqlalchemy import session as db_session +from ironic.db.sqlalchemy import api as sqla_api def _alembic_config(): @@ -35,7 +35,7 @@ :returns: Database version :rtype: string """ - engine = db_session.get_engine() + engine = sqla_api.get_engine() with engine.connect() as conn: context = alembic_migration.MigrationContext.configure(conn) return context.get_current_revision() diff -Nru ironic-2014.1~b3/ironic/db/sqlalchemy/models.py ironic-2014.1~rc1/ironic/db/sqlalchemy/models.py --- ironic-2014.1~b3/ironic/db/sqlalchemy/models.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/db/sqlalchemy/models.py 2014-04-01 19:49:34.000000000 +0000 @@ -27,7 +27,7 @@ from sqlalchemy import ForeignKey, Integer, Index from sqlalchemy import schema, String, Text from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.types import TypeDecorator, VARCHAR +from sqlalchemy.types import TypeDecorator, TEXT from ironic.openstack.common.db.sqlalchemy import models @@ -51,7 +51,7 @@ class JsonEncodedType(TypeDecorator): """Abstract base type serialized as json-encoded string in db.""" type = None - impl = VARCHAR + impl = TEXT def process_bind_param(self, value, dialect): if value is None: @@ -93,6 +93,13 @@ d[c.name] = self[c.name] return d + def save(self, session=None): + import ironic.db.sqlalchemy.api as db_api + + if session is None: + session = db_api.get_session() + + super(IronicBase, self).save(session) Base = declarative_base(cls=IronicBase) diff -Nru ironic-2014.1~b3/ironic/drivers/base.py ironic-2014.1~rc1/ironic/drivers/base.py --- ironic-2014.1~b3/ironic/drivers/base.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/base.py 2014-04-01 19:49:34.000000000 +0000 @@ -58,7 +58,9 @@ """ rescue = None - standard_interfaces.append('rescue') + # NOTE(deva): hide rescue from the interface list in Icehouse + # because the API for this has not been created yet. + # standard_interfaces.append('rescue') """`Standard` attribute for accessing rescue features. A reference to an instance of :class:RescueInterface. @@ -306,7 +308,9 @@ :param task: a task from TaskManager. :param node: a single Node. :param kwargs: info for action. - :raises: InvalidParameterValue + :raises: UnsupportedDriverExtension if 'method' can not be mapped to + the supported interfaces. + :raises: InvalidParameterValue if **kwargs does not contain 'method'. """ @abc.abstractmethod @@ -316,4 +320,8 @@ :param task: a task from TaskManager. :param node: a single Node. :param kwargs: info for action. + + :raises: UnsupportedDriverExtension if 'method' can not be mapped to + the supported interfaces. + :raises: InvalidParameterValue if **kwargs does not contain 'method'. """ diff -Nru ironic-2014.1~b3/ironic/drivers/fake.py ironic-2014.1~rc1/ironic/drivers/fake.py --- ironic-2014.1~b3/ironic/drivers/fake.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/fake.py 2014-04-01 19:49:34.000000000 +0000 @@ -17,6 +17,7 @@ Fake drivers used in testing. """ +from ironic.common import exception from ironic.drivers import base from ironic.drivers.modules import fake from ironic.drivers.modules import ipminative @@ -24,6 +25,8 @@ from ironic.drivers.modules import pxe from ironic.drivers.modules import seamicro from ironic.drivers.modules import ssh +from ironic.drivers import utils +from ironic.openstack.common import importutils class FakeDriver(base.BaseDriver): @@ -33,9 +36,11 @@ self.power = fake.FakePower() self.deploy = fake.FakeDeploy() - a = fake.FakeVendorA() - b = fake.FakeVendorB() - self.vendor = fake.MultipleVendorInterface(a, b) + self.a = fake.FakeVendorA() + self.b = fake.FakeVendorB() + self.mapping = {'first_method': self.a, + 'second_method': self.b} + self.vendor = utils.MixinVendorInterface(self.mapping) self.console = fake.FakeConsole() @@ -54,7 +59,6 @@ def __init__(self): self.power = fake.FakePower() self.deploy = pxe.PXEDeploy() - self.rescue = self.deploy self.vendor = pxe.VendorPassthru() @@ -79,10 +83,8 @@ """Fake SeaMicro driver.""" def __init__(self): + if not importutils.try_import('seamicroclient'): + raise exception.DriverNotFound('FakeSeaMicroDriver') self.power = seamicro.Power() self.deploy = fake.FakeDeploy() - self.rescue = self.deploy - self.seamicro_vendor = seamicro.VendorPassthru() - self.pxe_vendor = pxe.VendorPassthru() - self.vendor = seamicro.SeaMicroPXEMultipleVendorInterface( - self.seamicro_vendor, self.pxe_vendor) + self.vendor = seamicro.VendorPassthru() diff -Nru ironic-2014.1~b3/ironic/drivers/modules/fake.py ironic-2014.1~rc1/ironic/drivers/modules/fake.py --- ironic-2014.1~b3/ironic/drivers/modules/fake.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/modules/fake.py 2014-04-01 19:49:34.000000000 +0000 @@ -129,37 +129,6 @@ _raise_unsupported_error(method) -class MultipleVendorInterface(base.VendorInterface): - """Example of a wrapper around two VendorInterfaces.""" - - def __init__(self, first, second): - self.interface_one = first - self.interface_two = second - self.mapping = {'first_method': self.interface_one, - 'second_method': self.interface_two} - - def _map(self, **kwargs): - """Map methods to interfaces. - - :returns: an instance of a VendorInterface - :raises: InvalidParameterValue if **kwargs does not contain 'method' - or if the method can not be mapped to an interface. - - """ - method = kwargs.get('method') - return self.mapping.get(method) or _raise_unsupported_error(method) - - def validate(self, *args, **kwargs): - """Call validate on the appropriate interface only.""" - route = self._map(**kwargs) - route.validate(*args, **kwargs) - - def vendor_passthru(self, task, node, **kwargs): - """Call vendor_passthru on the appropriate interface only.""" - route = self._map(**kwargs) - return route.vendor_passthru(task, node, **kwargs) - - class FakeConsole(base.ConsoleInterface): """Example implementation of a simple console interface.""" diff -Nru ironic-2014.1~b3/ironic/drivers/modules/ipminative.py ironic-2014.1~rc1/ironic/drivers/modules/ipminative.py --- ironic-2014.1~b3/ironic/drivers/modules/ipminative.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/modules/ipminative.py 2014-04-01 19:49:34.000000000 +0000 @@ -31,7 +31,7 @@ opts = [ cfg.IntOpt('retry_timeout', - default=10, + default=60, help='Maximum time in seconds to retry IPMI operations.'), ] @@ -306,7 +306,7 @@ """ method = kwargs['method'] if method == 'set_boot_device': - device = kwargs.get('device', None) + device = kwargs.get('device') if device not in ipmi_command.boot_devices: raise exception.InvalidParameterValue(_( "Invalid boot device %s specified.") % device) diff -Nru ironic-2014.1~b3/ironic/drivers/modules/ipmitool.py ironic-2014.1~rc1/ironic/drivers/modules/ipmitool.py --- ironic-2014.1~b3/ironic/drivers/modules/ipmitool.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/modules/ipmitool.py 2014-04-01 19:49:34.000000000 +0000 @@ -138,84 +138,100 @@ return out, err -def _power_on(driver_info): - """Turn the power ON for this node. +def _sleep_time(iter): + """Return the time-to-sleep for the n'th iteration of a retry loop. + This implementation increases exponentially. + + :param iter: iteration number + :returns: number of seconds to sleep + + """ + if iter <= 1: + return 1 + return iter ** 2 + +def _set_and_wait(target_state, driver_info): + """Helper function for DynamicLoopingCall. + + This method changes the power state and polls the BMCuntil the desired + power state is reached, or CONF.ipmi.retry_timeout would be exceeded by the + next iteration. + + This method assumes the caller knows the current power state and does not + check it prior to changing the power state. Most BMCs should be fine, but + if a driver is concerned, the state should be checked prior to calling this + method. + + :param target_state: desired power state :param driver_info: the ipmitool parameters for accessing a node. - :returns: one of ironic.common.states POWER_ON or ERROR. + :returns: one of ironic.common.states :raises: IPMIFailure on an error from ipmitool (from _power_status call). """ - # use mutable objects so the looped method can change them - state = [None] - retries = [0] + if target_state == states.POWER_ON: + state_name = "on" + elif target_state == states.POWER_OFF: + state_name = "off" - def _wait_for_power_on(state, retries): - """Called at an interval until the node's power is on.""" + def _wait(mutable): + try: + # Only issue power change command once + if mutable['iter'] < 0: + _exec_ipmitool(driver_info, "power %s" % state_name) + else: + mutable['power'] = _power_status(driver_info) + except Exception: + # Log failures but keep trying + LOG.warning(_("IPMI power %(state)s failed for node %(node)s."), + {'state': state_name, 'node': driver_info['uuid']}) + finally: + mutable['iter'] += 1 - state[0] = _power_status(driver_info) - if state[0] == states.POWER_ON: + if mutable['power'] == target_state: raise loopingcall.LoopingCallDone() - if retries[0] > CONF.ipmi.retry_timeout: - LOG.error(_('IPMI power on timed out after %(tries)s retries.'), - {'tries': retries[0]}) - state[0] = states.ERROR + sleep_time = _sleep_time(mutable['iter']) + if (sleep_time + mutable['total_time']) > CONF.ipmi.retry_timeout: + # Stop if the next loop would exceed maximum retry_timeout + LOG.error(_('IPMI power %(state)s timed out after ' + '%(tries)s retries.'), + {'state': state_name, 'tries': mutable['iter']}) + mutable['power'] = states.ERROR raise loopingcall.LoopingCallDone() - try: - # only issue "power on" once - if retries[0] == 0: - _exec_ipmitool(driver_info, "power on") - retries[0] += 1 - except Exception: - # Log failures but keep trying - LOG.warning(_("IPMI power on failed for node %s.") - % driver_info['uuid']) + else: + mutable['total_time'] += sleep_time + return sleep_time - timer = loopingcall.FixedIntervalLoopingCall(_wait_for_power_on, - state, retries) - timer.start(interval=1.0).wait() - return state[0] + # Use mutable objects so the looped method can change them. + # Start 'iter' from -1 so that the first two checks are one second apart. + status = {'power': None, 'iter': -1, 'total_time': 0} + + timer = loopingcall.DynamicLoopingCall(_wait, status) + timer.start().wait() + return status['power'] -def _power_off(driver_info): - """Turn the power OFF for this node. +def _power_on(driver_info): + """Turn the power ON for this node. :param driver_info: the ipmitool parameters for accessing a node. - :returns: one of ironic.common.states POWER_OFF or ERROR. + :returns: one of ironic.common.states POWER_ON or ERROR. :raises: IPMIFailure on an error from ipmitool (from _power_status call). """ - # use mutable objects so the looped method can change them - state = [None] - retries = [0] + return _set_and_wait(states.POWER_ON, driver_info) - def _wait_for_power_off(state, retries): - """Called at an interval until the node's power is off.""" - state[0] = _power_status(driver_info) - if state[0] == states.POWER_OFF: - raise loopingcall.LoopingCallDone() +def _power_off(driver_info): + """Turn the power OFF for this node. - if retries[0] > CONF.ipmi.retry_timeout: - LOG.error(_('IPMI power off timed out after %(tries)s retries.'), - {'tries': retries[0]}) - state[0] = states.ERROR - raise loopingcall.LoopingCallDone() - try: - # only issue "power off" once - if retries[0] == 0: - _exec_ipmitool(driver_info, "power off") - retries[0] += 1 - except Exception: - # Log failures but keep trying - LOG.warning(_("IPMI power off failed for node %s.") - % driver_info['uuid']) + :param driver_info: the ipmitool parameters for accessing a node. + :returns: one of ironic.common.states POWER_OFF or ERROR. + :raises: IPMIFailure on an error from ipmitool (from _power_status call). - timer = loopingcall.FixedIntervalLoopingCall(_wait_for_power_off, - state=state, retries=retries) - timer.start(interval=1.0).wait() - return state[0] + """ + return _set_and_wait(states.POWER_OFF, driver_info) def _power_status(driver_info): @@ -246,14 +262,23 @@ class IPMIPower(base.PowerInterface): def validate(self, task, node): - """Check that node['driver_info'] contains IPMI credentials. + """Validate driver_info for ipmitool driver. + + Check that node['driver_info'] contains IPMI credentials and BMC is + accessible with this credentials. :param task: a task from TaskManager. :param node: Single node object. :raises: InvalidParameterValue if required ipmi parameters are missing. """ - _parse_driver_info(node) + driver_info = _parse_driver_info(node) + try: + _exec_ipmitool(driver_info, "mc guid") + except Exception as e: + msg = _("BMC inaccessible for node %(node)s: " + "%(error)s") % {'node': node.uuid, 'error': e} + raise exception.InvalidParameterValue(msg) def get_power_state(self, task, node): """Get the current power state. @@ -346,7 +371,7 @@ def validate(self, node, **kwargs): method = kwargs['method'] if method == 'set_boot_device': - device = kwargs.get('device', None) + device = kwargs.get('device') if device not in VALID_BOOT_DEVICES: raise exception.InvalidParameterValue(_( "Invalid boot device %s specified.") % device) diff -Nru ironic-2014.1~b3/ironic/drivers/modules/pxe.py ironic-2014.1~rc1/ironic/drivers/modules/pxe.py --- ironic-2014.1~b3/ironic/drivers/modules/pxe.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/modules/pxe.py 2014-04-01 19:49:34.000000000 +0000 @@ -110,8 +110,8 @@ # Internal use only d_info['deploy_key'] = info.get('pxe_deploy_key') - #TODO(ghe): Should we get rid of swap partition? - d_info['swap_mb'] = info.get('pxe_swap_mb', 1) + # TODO(ghe): Should we get rid of swap partition? + d_info['swap_mb'] = info.get('pxe_swap_mb', 0) d_info['ephemeral_gb'] = info.get('pxe_ephemeral_gb', 0) d_info['ephemeral_format'] = info.get('pxe_ephemeral_format') @@ -125,6 +125,12 @@ raise exception.InvalidParameterValue(err_msg_invalid % {'param': param, 'reason': reason}) + # NOTE(lucasagomes): For simpler code paths on the deployment side, + # we always create a swap partition. if the size is + # <= 0 we default to 1MB + if int(d_info['swap_mb']) <= 0: + d_info['swap_mb'] = 1 + if d_info['ephemeral_gb'] and not d_info['ephemeral_format']: msg = _("The deploy contains an ephemeral partition, but no " "filesystem type was specified by the pxe_ephemeral_format " @@ -544,6 +550,17 @@ "any port associated with it.") % node.uuid) _parse_driver_info(node) + # Try to get the URL of the Ironic API + try: + # TODO(lucasagomes): Validate the format of the URL + CONF.conductor.api_url or keystone.get_service_url() + except (exception.CatalogFailure, + exception.CatalogNotFound, + exception.CatalogUnauthorized): + raise exception.InvalidParameterValue(_( + "Couldn't get the URL of the Ironic API service from the " + "configuration file or keystone catalog.")) + @task_manager.require_exclusive_lock def deploy(self, task, node): """Perform start deployment a node. @@ -562,6 +579,7 @@ # to deploy ramdisk _create_token_file(task, node) _update_neutron(task, node) + manager_utils.node_set_boot_device(task, node, 'pxe', persistent=True) manager_utils.node_power_action(task, node, states.REBOOT) return states.DEPLOYWAIT @@ -579,6 +597,12 @@ """ manager_utils.node_power_action(task, node, states.POWER_OFF) + # Remove the internal pxe_deploy_key attribute + driver_info = node.driver_info + if driver_info.pop('pxe_deploy_key', None): + node.driver_info = driver_info + node.save(task.context) + return states.DELETED def prepare(self, task, node): @@ -635,18 +659,6 @@ _update_neutron(task, node) -class PXERescue(base.RescueInterface): - - def validate(self, task, node): - pass - - def rescue(self, task, node): - pass - - def unrescue(self, task, node): - pass - - class VendorPassthru(base.VendorInterface): """Interface to mix IPMI and PXE vendor-specific interfaces.""" @@ -685,9 +697,6 @@ method = kwargs['method'] if method == 'pass_deploy_info': self._get_deploy_info(node, **kwargs) - elif method == 'set_boot_device': - # todo - pass else: raise exception.InvalidParameterValue(_( "Unsupported method (%s) passed to PXE driver.") @@ -695,6 +704,7 @@ return True + @task_manager.require_exclusive_lock def _continue_deploy(self, task, node, **kwargs): """Resume a deployment upon getting POST data from deploy ramdisk. @@ -756,13 +766,5 @@ def vendor_passthru(self, task, node, **kwargs): method = kwargs['method'] - if method == 'set_boot_device': - return node.driver.vendor._set_boot_device( - task, node, - kwargs.get('device'), - kwargs.get('persistent')) - - elif method == 'pass_deploy_info': - ctx = task.context - with task_manager.acquire(ctx, node['uuid']) as inner_task: - self._continue_deploy(inner_task, node, **kwargs) + if method == 'pass_deploy_info': + self._continue_deploy(task, node, **kwargs) diff -Nru ironic-2014.1~b3/ironic/drivers/modules/seamicro.py ironic-2014.1~rc1/ironic/drivers/modules/seamicro.py --- ironic-2014.1~b3/ironic/drivers/modules/seamicro.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/modules/seamicro.py 2014-04-01 19:49:34.000000000 +0000 @@ -20,17 +20,20 @@ """ from oslo.config import cfg -from seamicroclient import client as seamicro_client -from seamicroclient import exceptions as seamicro_client_exception - from ironic.common import exception from ironic.common import states from ironic.conductor import task_manager from ironic.drivers import base +from ironic.openstack.common import importutils from ironic.openstack.common import log as logging from ironic.openstack.common import loopingcall +seamicroclient = importutils.try_import('seamicroclient') +if seamicroclient: + from seamicroclient import client as seamicro_client + from seamicroclient import exceptions as seamicro_client_exception + opts = [ cfg.IntOpt('max_retry', default=3, @@ -383,7 +386,7 @@ class VendorPassthru(base.VendorInterface): """SeaMicro vendor-specific methods.""" - def validate(self, node, **kwargs): + def validate(self, task, node, **kwargs): method = kwargs['method'] if method in VENDOR_PASSTHRU_METHODS: return True @@ -464,9 +467,9 @@ def _set_boot_device(self, task, node, **kwargs): """Set the boot device of the node. - @kwargs boot_device: Boot device. One of [pxe, disk] + @kwargs device: Boot device. One of [pxe, disk] """ - boot_device = kwargs.get('boot_device') + boot_device = kwargs.get('device') if boot_device is None: raise exception.InvalidParameterValue(_("No boot device provided")) @@ -484,35 +487,3 @@ except seamicro_client_exception.ClientException as ex: LOG.error(_("set_boot_device error: %s"), ex.message) raise exception.VendorPassthruException(message=ex.message) - - -class SeaMicroPXEMultipleVendorInterface(base.VendorInterface): - """Wrapper around SeaMicro and PXE VendorInterfaces.""" - - def __init__(self, seamicro_vendor, pxe_vendor): - self.seamicro_vendor = seamicro_vendor - self.pxe_vendor = pxe_vendor - self.mapping = dict((method, self.seamicro_vendor) - for method in VENDOR_PASSTHRU_METHODS) - - def _map(self, **kwargs): - """Use SeaMicro interface if method is supported by SeaMicro, - else use PXE. - - :returns: an instance of a VendorInterface - :raises: InvalidParameterValue if **kwargs does not contain 'method' - or if the method can not be mapped to an interface. - - """ - method = kwargs.get('method') - return self.mapping.get(method) or self.pxe_vendor - - def validate(self, *args, **kwargs): - """Call validate on the appropriate interface only.""" - route = self._map(**kwargs) - route.validate(*args, **kwargs) - - def vendor_passthru(self, task, node, **kwargs): - """Call vendor_passthru on the appropriate interface only.""" - route = self._map(**kwargs) - return route.vendor_passthru(task, node, **kwargs) diff -Nru ironic-2014.1~b3/ironic/drivers/modules/ssh.py ironic-2014.1~rc1/ironic/drivers/modules/ssh.py --- ironic-2014.1~b3/ironic/drivers/modules/ssh.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/modules/ssh.py 2014-04-01 19:49:34.000000000 +0000 @@ -87,6 +87,10 @@ "grep macAddress | awk -F '\"' '{print $2}' || true"), } elif virt_type == "virsh": + # NOTE(NobodyCam): changes to the virsh commands will impact CI + # see https://review.openstack.org/83906 + # Change-Id: I160e4202952b7551b855dc7d91784d6a184cb0ed + # for more detail. virsh_cmds = { 'base_cmd': '/usr/bin/virsh', 'start_cmd': 'start {_NodeName_}', @@ -158,6 +162,7 @@ except ValueError: raise exception.InvalidParameterValue(_( "SSHPowerDriver requires ssh_port to be integer value")) + key_contents = info.get('ssh_key_contents') key_filename = info.get('ssh_key_filename') virt_type = info.get('ssh_virt_type') @@ -180,13 +185,17 @@ if not address or not username: raise exception.InvalidParameterValue(_( "SSHPowerDriver requires both address and username be set.")) + # Only one credential may be set (avoids complexity around having + # precedence etc). + if len(filter(None, (password, key_filename, key_contents))) != 1: + raise exception.InvalidParameterValue(_( + "SSHPowerDriver requires one and only one of password, " + "key_contents and key_filename to be set.")) if password: res['password'] = password + elif key_contents: + res['key_contents'] = key_contents else: - if not key_filename: - raise exception.InvalidParameterValue(_( - "SSHPowerDriver requires either password or " - "key_filename be set.")) if not os.path.isfile(key_filename): raise exception.InvalidParameterValue(_( "SSH key file %s not found.") % key_filename) diff -Nru ironic-2014.1~b3/ironic/drivers/pxe.py ironic-2014.1~rc1/ironic/drivers/pxe.py --- ironic-2014.1~b3/ironic/drivers/pxe.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/pxe.py 2014-04-01 19:49:34.000000000 +0000 @@ -17,12 +17,15 @@ PXE Driver and supporting meta-classes. """ +from ironic.common import exception from ironic.drivers import base from ironic.drivers.modules import ipminative from ironic.drivers.modules import ipmitool from ironic.drivers.modules import pxe from ironic.drivers.modules import seamicro from ironic.drivers.modules import ssh +from ironic.drivers import utils +from ironic.openstack.common import importutils class PXEAndIPMIToolDriver(base.BaseDriver): @@ -37,8 +40,11 @@ def __init__(self): self.power = ipmitool.IPMIPower() self.deploy = pxe.PXEDeploy() - self.rescue = self.deploy - self.vendor = pxe.VendorPassthru() + self.pxe_vendor = pxe.VendorPassthru() + self.ipmi_vendor = ipmitool.VendorPassthru() + self.mapping = {'pass_deploy_info': self.pxe_vendor, + 'set_boot_device': self.ipmi_vendor} + self.vendor = utils.MixinVendorInterface(self.mapping) class PXEAndSSHDriver(base.BaseDriver): @@ -56,7 +62,6 @@ def __init__(self): self.power = ssh.SSHPower() self.deploy = pxe.PXEDeploy() - self.rescue = self.deploy self.vendor = pxe.VendorPassthru() @@ -74,8 +79,11 @@ def __init__(self): self.power = ipminative.NativeIPMIPower() self.deploy = pxe.PXEDeploy() - self.rescue = self.deploy - self.vendor = pxe.VendorPassthru() + self.pxe_vendor = pxe.VendorPassthru() + self.ipmi_vendor = ipminative.VendorPassthru() + self.mapping = {'pass_deploy_info': self.pxe_vendor, + 'set_boot_device': self.ipmi_vendor} + self.vendor = utils.MixinVendorInterface(self.mapping) class PXEAndSeaMicroDriver(base.BaseDriver): @@ -90,10 +98,14 @@ """ def __init__(self): + if not importutils.try_import('seamicroclient'): + raise exception.DriverNotFound('PXEAndSeaMicroDriver') self.power = seamicro.Power() self.deploy = pxe.PXEDeploy() - self.rescue = self.deploy self.seamicro_vendor = seamicro.VendorPassthru() self.pxe_vendor = pxe.VendorPassthru() - self.vendor = seamicro.SeaMicroPXEMultipleVendorInterface( - self.seamicro_vendor, self.pxe_vendor) + self.mapping = {'pass_deploy_info': self.pxe_vendor, + 'attach_volume': self.seamicro_vendor, + 'set_boot_device': self.seamicro_vendor, + 'set_node_vlan_id': self.seamicro_vendor} + self.vendor = utils.MixinVendorInterface(self.mapping) diff -Nru ironic-2014.1~b3/ironic/drivers/utils.py ironic-2014.1~rc1/ironic/drivers/utils.py --- ironic-2014.1~b3/ironic/drivers/utils.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/drivers/utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,66 @@ +# Copyright 2014 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 ironic.common import exception +from ironic.drivers import base + + +def _raise_unsupported_error(method=None): + if method: + raise exception.UnsupportedDriverExtension(_( + "Unsupported method (%s) passed through to vendor extension.") + % method) + raise exception.InvalidParameterValue(_( + "Method not specified when calling vendor extension.")) + + +class MixinVendorInterface(base.VendorInterface): + """Wrapper around multiple VendorInterfaces.""" + + def __init__(self, mapping): + """Wrapper around multiple VendorInterfaces. + + :param mapping: dict of {'method': interface} specifying how to combine + multiple vendor interfaces into one vendor driver. + + """ + self.mapping = mapping + + def _map(self, **kwargs): + method = kwargs.get('method') + return self.mapping.get(method) or _raise_unsupported_error(method) + + def validate(self, *args, **kwargs): + """Call validate on the appropriate interface only. + + :raises: UnsupportedDriverExtension if 'method' can not be mapped to + the supported interfaces. + :raises: InvalidParameterValue if **kwargs does not contain 'method'. + + """ + route = self._map(**kwargs) + route.validate(*args, **kwargs) + + def vendor_passthru(self, task, node, **kwargs): + """Call vendor_passthru on the appropriate interface only. + + Returns or raises according to the requested vendor_passthru method. + + :raises: UnsupportedDriverExtension if 'method' can not be mapped to + the supported interfaces. + :raises: InvalidParameterValue if **kwargs does not contain 'method'. + + """ + route = self._map(**kwargs) + return route.vendor_passthru(task, node, **kwargs) diff -Nru ironic-2014.1~b3/ironic/locale/ar/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ar/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ar/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ar/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,89 @@ -# Arabic translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \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" +"Language-Team: Arabic (http://www.transifex.com/projects/p/openstack/language/ar/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/bg_BG/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/bg_BG/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/bg_BG/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/bg_BG/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Bulgarian (Bulgaria) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/openstack/language/bg_BG/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: bg_BG\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/bn_IN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/bn_IN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/bn_IN/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/bn_IN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Bengali (India) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Bengali (India) (http://www.transifex.com/projects/p/openstack/language/bn_IN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: bn_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/bs/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/bs/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/bs/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/bs/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,89 @@ -# Bosnian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Bosnian " -"(http://www.transifex.com/projects/p/openstack/language/bs/)\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" +"Language-Team: Bosnian (http://www.transifex.com/projects/p/openstack/language/bs/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: bs\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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ca/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ca/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ca/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ca/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Catalan translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Catalan (http://www.transifex.com/projects/p/openstack/language/ca/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/cs/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/cs/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/cs/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/cs/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Czech translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Czech " -"(http://www.transifex.com/projects/p/openstack/language/cs/)\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"Language-Team: Czech (http://www.transifex.com/projects/p/openstack/language/cs/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Vyskytla se neočekávaná výjimka." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Výjimka při operaci s formátem řetězce" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Neschváleno." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Nepřijatelné parametry." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "Obraz %(image_id)s je nepřijatelný: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Zdroj nemohl být nalezen." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Obraz %(image_id)s nemohl být nalezen." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "Připojení k hostiteli glance %(host)s:%(port)s selhalo: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Nemáte oprávnění k použití obrazu %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Neplatný href %(image_href)s obrazu." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Nelze najít nastavení v %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." -msgstr "" +msgstr "zpracování 'qemu-img info' selhalo." -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s zálohováno: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Převedeno na prosté, ale formát je nyní %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Neplatná podpůrná vrstva: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Znovu načítání souboru mezipaměti %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "Nelze odstranit dočasný adresář: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:798 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPU nenastaveny; předpokládáno poškození sbírky CPU" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1020,7 +1463,7 @@ #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "zařízení záznamu systému musí být jedno z: %s" #: ironic/openstack/common/log.py:623 #, python-format @@ -1063,12 +1506,12 @@ #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Spuštění pravidelné úlohy %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Chyba při %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format @@ -1088,95 +1531,95 @@ #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Získány neznámé argumenty klíčového slova pro utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Spouštění příkazu (podproces): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Výsledek byl %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r selhalo. Opakování." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Spouštění příkazu (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Prostředí není podporováno přes SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input není podporován přes SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,70 +1665,85 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Neplatný parametr: Unicode není současnou databází podporován." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "verze by měla být celé číslo" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Nerozpoznaná hodnota read_deleted '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s není v platných prioritách" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problém '%(e)s' se pokouší poslat do systému oznámení. Náklad=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format @@ -1296,585 +1754,432 @@ #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Nelze odeslat oznámení na %(topic)s. Obsah=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "rozbalený kontext: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "obdrženo: %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "pro zprávu není metoda: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Pro zprávu není metoda: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID je %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Provádění asynchronního obsazení na %s ..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Provádění asynchronního obsazení rozvětvení..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Odesílání %(event_type)s na %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Vzdálená chyba: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Neplatné znovu použití připojení RPC." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" +msgstr "Volajícímu je vrácena výjimka: %s" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Znovu připojování k serveru AMQP na %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Připojení k serveru AMQP na %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Nelze se připojit k serveru AMQP na %(hostname)s:%(port)d po %(max_retries)d pokusech: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "AMQP server na %(hostname)s:%(port)d je nedosažitelný: %(err_str)s. Další pokus za %(sleep_time)d vteřin." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Nelze deklarovat spotřebitele pro téma '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Při čekání na odpověď RPC vypršel čas: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Nelze spotřebovat zprávu z fronty: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "Nelze vydat zprávu do tématu '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Nelze zpracovat zprávu... přeskakování." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Připojeno k serveru AMQP na %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Znovu obnoveny fronty AMQP" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Chyba při zpracování zprávy. Přeskakování." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" +msgstr "Vytváření připojení zákazníka pro službu %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/da/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/da/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/da/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/da/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Danish translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Danish " -"(http://www.transifex.com/projects/p/openstack/language/da/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Danish (http://www.transifex.com/projects/p/openstack/language/da/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Undtagelse i streng-format handlingen" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Node %s can't be deleted because it's not powered off" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:763 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1020,12 +1463,12 @@ #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog faciliteten skal være en af: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Fatalt kald til forældet konfig: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format @@ -1099,12 +1542,12 @@ #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Resultatet var %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r mislykkedes. Prøver igen." #: ironic/openstack/common/processutils.py:219 #, python-format @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Ubehandlet undtagelse" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Ugyldig parameter: Unicode er ikke understøttet af den aktuelle database." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "modtog %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "ingen metode for beskeden: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Ingen metode for beskeden: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID er %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Udpakker svar" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Sender besked(er) til: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/de/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/de/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/de/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/de/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# German translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: German " -"(http://www.transifex.com/projects/p/openstack/language/de/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: German (http://www.transifex.com/projects/p/openstack/language/de/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,885 +94,1338 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Eine unbekannte Ausnahme ist aufgetreten." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Ausnahme bei Zeichenfolgeformatoperation" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Nicht autorisiert." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Unzulässige Parameter." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "Image %(image_id)s ist nicht zulässig: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Ressource konnte nicht gefunden werden." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Image %(image_id)s konnte nicht gefunden werden." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Für Image %(image_id)s nicht autorisiert." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Ungültiger Image-Hyperlink %(image_href)s." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Konfiguration konnte unter %(path)s nicht gefunden werden" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "Momentaufnahmenliste gefunden, aber kein Header gefunden!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "Auswertung von 'qemu-img info' fehlgeschlagen." + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "In unformatierten Zustand konvertiert, Format ist nun jedoch %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Ungültiges Back-End: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Im Cache gespeicherte Datei %s wird neu geladen" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "tmpdir konnte nicht entfernt werden: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "deaktivieren" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "SSH key file %s not found." +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 -#, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:225 -#, python-format -msgid "Retrieved Node List: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Found Mac address: %s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Error setting %(attr)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:200 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 #, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/base.py:301 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "Cannot load '%(attrname)s' in the base class" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/objects/utils.py:104 -#, python-format -msgid "An object of class %s is required here" +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/openstack/common/excutils.py:64 -#, python-format -msgid "Original exception being dropped: %s" +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/openstack/common/excutils.py:93 +#: ironic/drivers/modules/ssh.py:200 #, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +msgid "SSH key file %s not found." msgstr "" -#: ironic/openstack/common/lockutils.py:105 +#: ironic/drivers/modules/ssh.py:233 #, python-format -msgid "Could not release the acquired lock `%s`" +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/openstack/common/lockutils.py:170 +#: ironic/drivers/modules/ssh.py:264 #, python-format -msgid "Got semaphore \"%(lock)s\"" +msgid "Retrieved Node List: %s" msgstr "" -#: ironic/openstack/common/lockutils.py:179 +#: ironic/drivers/modules/ssh.py:269 #, python-format -msgid "Attempting to grab file lock \"%(lock)s\"" +msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/openstack/common/lockutils.py:189 +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "Ursprüngliche Ausnahme wird gelöscht: %s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "Angeforderte Sperre `%s` konnte nicht freigegeben werden" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:189 #, python-format msgid "Created lock path: %s" msgstr "" @@ -1010,40 +1453,40 @@ #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Veraltet: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "Fehler beim laden der Logging Konfiguration %(log_config)s: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog-Funktion muss einer der folgenden Werte sein: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Schwerwiegender Aufruf an veraltete Konfiguration: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "Ausgeführte Task hat Intervall um %s Sekunden überschritten" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "in Schleifenaufruf mit festgelegter Dauer" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "der dynamischen Schleifenaufruf ruht für %.02f Sekunden" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "in dynamischen Schleifenaufruf" #: ironic/openstack/common/periodic_task.py:43 #, python-format @@ -1063,144 +1506,144 @@ #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Ausführen von regelmäßiger Task %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Fehler bei %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "Regel %(rule)s konnte nicht verstanden werden" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "Kein Handler für Übereinstimmungen des Typs %s" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "Regel %(rule)r konnte nicht verstanden werden" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Unbekannte Schlüsselwortargumente für utils.execute erhalten: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Führe Kommando (subprocess) aus: %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Ergebnis war %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r fehlgeschlagen. Neuversuch." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "CMD wird ausgeführt (Secure Shell): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Umgebung über Secure Shell nicht unterstützt" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "'process_input' über Secure Shell nicht unterstützt" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Vollständiger Satz von CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "%s abgefangen. Vorgang wird beendet" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "Übergeordneter Prozess wurde unerwartet abgebrochen. Vorgang wird beendet" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Nicht behandelte Ausnahme" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Verzweigung zu schnell; im Ruhemodus" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Untergeordnetes Element %d gestartet" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Starten von %d Workers" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "Untergeordnetes Element %(pid)d durch Signal %(sig)d abgebrochen" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "Untergeordnete %(pid)s mit Status %(code)d beendet" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "PID %d nicht in Liste untergeordneter Elemente" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "%s abgefangen, untergeordnete Elemente werden gestoppt" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "Warten auf Beenden von %d untergeordneten Elementen" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "'cert_file' konnte nicht gefunden werden: %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "'ca_file' konnte nicht gefunden werden: %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "'key_file' konnte nicht gefunden werden: %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "Wenn der Server im SSL-Modus läuft, müssen Sie sowohl für die 'cert_file'- als auch für die 'key_file'-Option in Ihrer Konfigurationsdatei einen Wert angeben" #: ironic/openstack/common/sslutils.py:100 #, python-format @@ -1220,661 +1663,523 @@ #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Unbekannter Bytemultiplikator %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Ungültiger Parameter: Unicode wird von der aktuellen Datenbank nicht unterstützt." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "Version sollte eine Ganzzahl sein" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "Der angegebene Sortierschlüssel war nicht gültig. " + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "Unbekannte Sortierrichtung; muss 'desc' oder 'asc' sein" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Nicht erkannter read_deleted-Wert '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s nicht in gültigen Prioritäten" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problem '%(e)s' bei Versuch, an Benachrichtigungssystem zu senden. Payload=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Benachrichtigung %s konnte nicht geladen werden. Diese Benachrichtigungen werden nicht gesendet." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Benachrichtigung konnte nicht an %(topic)s gesendet werden. Payload=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" +msgstr "Pool erstellt neue Verbindung" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." -msgstr "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "Die Anzahl an wartenden Anrufthreads ist größer als die Warnungsbegrenzung: %d. Möglicherweise gibt es ein Leck in 'MulticallProxyWaiter'." -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "entpackter Kontext: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID ist %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "%s erhalten" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "keine Methode für diese Nachricht gefunden: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "keine Methode für diese Nachricht gefunden: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Erwartete Ausnahme bei Nachrichtenbehandlung (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Ausnahme bei Nachrichtenbehandlung" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Synchroner Aufruf bei %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID ist %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Asynchroner Cast bei %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Asynchroner Fan-out-Cast..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Senden von %(event_type)s auf %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "Eine unbekannte Ausnahme in Zusammenhang mit RPC ist aufgetreten." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Ferner Fehler: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Zeitüberschreitung beim Warten auf die RPC-Antwort - Thema: \"%(topic)s\", RPC Methode: \"%(method)s\" Information: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Doppelte Nachricht (%(msg_id)s) gefunden. Wird übersprungen." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Ungültige Wiederverwendung einer RPC-Verbindung." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "Angegebene RPC-Version %(version)s von diesem Endpunkt nicht unterstützt." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Angegebene RPC-Umschlagsversion %(version)s wird von diesem Endpunkt nicht unterstützt." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "Angegebene RPC Version cap, %(version_cap)s, ist zu niedrig" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" +msgstr "Ausnahme %s wird an Aufrufenden zurückgegeben" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Wiederherstellung der Verbindung zu AMQP-Server auf %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Verbunden mit AMQP-Server auf %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Herstellen einer Verbindung zu AMQP-Server auf %(hostname)s:%(port)d nach %(max_retries)d Versuchen nicht möglich: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "AMQP-Server auf %(hostname)s:%(port)d ist nicht erreichbar: %(err_str)s. Erneuter Versuch in %(sleep_time)d Sekunden." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Fehler beim Deklarieren von Consumer für Topic '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Zeitlimitüberschreitung bei Warten auf RPC-Antwort: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Nachricht aus Warteschlange wurde nicht verarbeitet: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "Fehler beim Veröffentlichen von Nachricht zu Topic '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Nachricht wurde nicht verarbeitet und wird übersprungen." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "Verbindung zu AMQP-Server kann nicht hergestellt werden: %(e)s. %(delay)s Sekunden Ruhemodus" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Verbunden mit AMQP-Server auf %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "AMQP-Warteschlangen erneut erstellt" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Fehler beim Verarbeiten der Nachricht. Wird übersprungen." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON-Serialisierung fehlgeschlagen." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Deserialisierung: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Verbindung zu %(addr)s mit %(type)s wird hergestellt" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> %(subscribe)s abonniert" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> Bindung: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Socket konnte nicht geöffnet werden." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "%s wird abonniert" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "Sie können auf diesem Socket nicht empfangen." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "Sie können auf diesem Socket nicht senden." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Ausführen von Funktion mit Kontext: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Senden von Antwort" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC-Nachricht hat keine Methode enthalten." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Registrieren von Reaktor" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "Eingangsreaktor registriert" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" +msgstr "Socketverwendung" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Erstellen von Proxy für Topic: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "Topic enthielt gefährliche Zeichen." -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "Erstellung von Topicsocketdatei fehlgeschlagen." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Lokaler topicbezogener Rückstandspuffer für Topic %(topic)s voll. Nachricht wird gelöscht." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "das benötigte IPC-Verzeichnis existiert nicht unter %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Zugriff verweigert zum IPC Verzeichnis %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "ZeroMQ-Empfängerdämon konnte nicht erstellt werden. Socket ist möglicherweise bereits belegt." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "CONSUMER HAT DATEN ERHALTEN: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ-Umschlagsversion nicht unterstützt oder unbekannt." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "Überspringen von Topicregistrierung. Bereits registriert." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "Consumer ist zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Erstellung von Nutzdaten" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Erstellung von Warteschlangensocket für wartenden Antwortthread" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Cast wird gesendet" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Cast gesendet. Warten auf Antwort" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Nachricht erhalten: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Entpacken von Antwort" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Nicht unterstützter oder unbekannter ZMQ-Umschlag zurückgegeben." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC-Nachricht ungültig." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Senden von Nachricht(en) an: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "Keine MatchMaker-Ergebnisse. Kein Casting." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "Keine Übereinstimmung von MatchMaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s is überholt; benutze stattdessen %(new)s" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Übereinstimmung von MatchMaker nicht gefunden." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "MatchMaker implementiert Registrierung oder Überwachungssignal nicht." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "MatchMaker nicht registriert: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Vor Starten von Überwachungssignal registrieren." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "Keine schlüsseldefinierenden Hosts für Topic '%s', siehe Ringdatei" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" +msgstr "Erstellung von Consumerverbindung für Service %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/el/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/el/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/el/LC_MESSAGES/ironic.po 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/el/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,2185 @@ +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ironic project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ironic\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Greek (http://www.transifex.com/projects/p/openstack/language/el/)\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" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ironic/api/controllers/v1/node.py:202 +#, python-format +msgid "Node %(node)s is already in the '%(state)s' state." +msgstr "" + +#: ironic/api/controllers/v1/node.py:215 +#, python-format +msgid "Node %s is already being provisioned or decommissioned." +msgstr "" + +#: ironic/api/controllers/v1/node.py:436 +msgid "Method not specified" +msgstr "" + +#: ironic/api/controllers/v1/node.py:466 +msgid "Chassis id not specified." +msgstr "" + +#: ironic/api/controllers/v1/node.py:641 +#, python-format +msgid "Node %s can not be updated while a state transition is in progress." +msgstr "" + +#: ironic/api/controllers/v1/port.py:166 +msgid "Node id not specified." +msgstr "" + +#: ironic/api/controllers/v1/types.py:128 +#, python-format +msgid "'%s' is an internal attribute and can not be updated" +msgstr "" + +#: ironic/api/controllers/v1/types.py:132 +#, python-format +msgid "'%s' is a mandatory attribute and can not be removed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:137 +#, python-format +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:143 +msgid "'add' and 'replace' operations needs value" +msgstr "" + +#: ironic/api/controllers/v1/types.py:174 +#, python-format +msgid "Wrong type. Expected '%(type)s', got '%(value)s'" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:31 +msgid "Limit must be positive" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:38 +#, python-format +msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" +msgstr "" + +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:52 +#, python-format +msgid "ErrorDocumentMiddleware received an invalid status %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:80 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ironic/cmd/api.py:53 +#, python-format +msgid "Serving on http://%(host)s:%(port)s" +msgstr "" + +#: ironic/cmd/api.py:55 +msgid "Configuration:" +msgstr "" + +#: ironic/common/exception.py:57 +msgid "An unknown exception occurred." +msgstr "" + +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ironic/common/exception.py:98 +msgid "Not authorized." +msgstr "" + +#: ironic/common/exception.py:103 +msgid "Operation not permitted." +msgstr "" + +#: ironic/common/exception.py:107 +msgid "Unacceptable parameters." +msgstr "" + +#: ironic/common/exception.py:112 +msgid "Conflict." +msgstr "" + +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 +msgid "Invalid resource state." +msgstr "" + +#: ironic/common/exception.py:126 +#, python-format +msgid "A Port with MAC address %(mac)s already exists." +msgstr "" + +#: ironic/common/exception.py:130 +#, python-format +msgid "Expected a uuid but received %(uuid)s." +msgstr "" + +#: ironic/common/exception.py:134 +#, python-format +msgid "Expected an uuid or int but received %(identity)s." +msgstr "" + +#: ironic/common/exception.py:138 +#, python-format +msgid "Expected a MAC address but received %(mac)s." +msgstr "" + +#: ironic/common/exception.py:142 +#, python-format +msgid "Invalid state '%(state)s' requested for node %(node)s." +msgstr "" + +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 +#, python-format +msgid "Failed to deploy instance: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:154 ironic/common/exception.py:158 +#, python-format +msgid "Image %(image_id)s is unacceptable: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:164 +#, python-format +msgid "%(err)s" +msgstr "%(err)s" + +#: ironic/common/exception.py:168 +msgid "Resource could not be found." +msgstr "" + +#: ironic/common/exception.py:173 +#, python-format +msgid "Failed to load driver %(driver_name)s." +msgstr "" + +#: ironic/common/exception.py:177 +#, python-format +msgid "Image %(image_id)s could not be found." +msgstr "" + +#: ironic/common/exception.py:181 +#, python-format +msgid "No valid host was found. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:185 +#, python-format +msgid "Instance %(instance)s could not be found." +msgstr "" + +#: ironic/common/exception.py:189 +#, python-format +msgid "Node %(node)s could not be found." +msgstr "" + +#: ironic/common/exception.py:193 +#, python-format +msgid "Node %(node)s is associated with instance %(instance)s." +msgstr "" + +#: ironic/common/exception.py:197 +#, python-format +msgid "Port %(port)s could not be found." +msgstr "" + +#: ironic/common/exception.py:201 +#, python-format +msgid "Update DHCP options on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "" + +#: ironic/common/exception.py:213 +#, python-format +msgid "Conductor %(conductor)s could not be found." +msgstr "" + +#: ironic/common/exception.py:217 +#, python-format +msgid "Conductor %(conductor)s already registered." +msgstr "" + +#: ironic/common/exception.py:221 +#, python-format +msgid "Failed to set node power state to %(pstate)s." +msgstr "" + +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." +msgstr "" + +#: ironic/common/exception.py:230 +#, python-format +msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 +#, python-format +msgid "" +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." +msgstr "" + +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 +#, python-format +msgid "IPMI call failed: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:258 +#, python-format +msgid "Failed to establish SSH connection to host %(host)s." +msgstr "" + +#: ironic/common/exception.py:262 +#, python-format +msgid "Failed to execute command via SSH: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:266 +#, python-format +msgid "Unsupported object type %(objtype)s" +msgstr "" + +#: ironic/common/exception.py:270 +#, python-format +msgid "Cannot call %(method)s on orphaned %(objtype)s object" +msgstr "" + +#: ironic/common/exception.py:274 +#, python-format +msgid "Driver %(driver)s does not support %(extension)s." +msgstr "" + +#: ironic/common/exception.py:278 +#, python-format +msgid "Version %(objver)s of %(objname)s is not supported" +msgstr "" + +#: ironic/common/exception.py:282 +#, python-format +msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:287 +#, python-format +msgid "Not authorized for image %(image_id)s." +msgstr "" + +#: ironic/common/exception.py:291 +#, python-format +msgid "Invalid image href %(image_href)s." +msgstr "" + +#: ironic/common/exception.py:295 +msgid "Unauthorised for keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:303 +#, python-format +msgid "" +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:308 +msgid "Connection failed" +msgstr "" + +#: ironic/common/exception.py:312 +msgid "Requested OpenStack Images API is forbidden" +msgstr "" + +#: ironic/common/exception.py:320 +msgid "The provided endpoint is invalid" +msgstr "" + +#: ironic/common/exception.py:324 +msgid "Unable to communicate with the server." +msgstr "" + +#: ironic/common/exception.py:340 +#, python-format +msgid "Could not find config at %(path)s" +msgstr "" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "" + +#: ironic/common/images.py:209 +#, python-format +msgid "fmt=%(fmt)s backed by: %(backing_file)s" +msgstr "" + +#: ironic/common/images.py:215 +#, python-format +msgid "%(image)s was %(format)s, converting to raw" +msgstr "" + +#: ironic/common/images.py:224 +#, python-format +msgid "Converted to raw, but format is now %s" +msgstr "" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 +#, python-format +msgid "Could not perform authorization process for service catalog: %s" +msgstr "" + +#: ironic/common/keystone.py:58 +msgid "No keystone service catalog loaded" +msgstr "" + +#: ironic/common/neutron.py:91 +#, python-format +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." +msgstr "" + +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." +msgstr "" + +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 +#, python-format +msgid "Execution completed, command line is \"%s\"" +msgstr "" + +#: ironic/common/utils.py:66 +#, python-format +msgid "Command stdout is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:67 +#, python-format +msgid "Command stderr is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 +#, python-format +msgid "SSH connect failed: %s" +msgstr "" + +#: ironic/common/utils.py:145 +#, python-format +msgid "Invalid backend: %s" +msgstr "" + +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ironic/common/utils.py:411 +#, python-format +msgid "Could not remove tmpdir: %s" +msgstr "" + +#: ironic/common/utils.py:446 +#, python-format +msgid "Failed to unlink %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:455 +#, python-format +msgid "Failed to remove dir %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:471 +#, python-format +msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:485 +#, python-format +msgid "" +"Failed to remove trailing character. Returning original object. Supplied " +"object is not a string: %s," +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:125 +#, python-format +msgid "" +"Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " +"%(extra)s." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:161 +msgid "Getting a full list of images metadata from glance." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:182 +#, python-format +msgid "Getting image metadata from glance. Image: %s" +msgstr "" + +#: ironic/conductor/manager.py:144 +#, python-format +msgid "" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" +msgstr "" + +#: ironic/conductor/manager.py:165 +#, python-format +msgid "Received notification: %r" +msgstr "" + +#: ironic/conductor/manager.py:188 +#, python-format +msgid "RPC update_node called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:192 +msgid "Invalid method call: update_node can not change node state." +msgstr "" + +#: ironic/conductor/manager.py:233 +#, python-format +msgid "" +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." +msgstr "" + +#: ironic/conductor/manager.py:272 +#, python-format +msgid "RPC vendor_passthru called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:318 +#, python-format +msgid "RPC do_node_deploy called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:324 +#, python-format +msgid "" +"RPC do_node_deploy called for %(node)s, but provision state is already " +"%(state)s." +msgstr "" + +#: ironic/conductor/manager.py:330 +msgid "provisioning" +msgstr "" + +#: ironic/conductor/manager.py:336 +#, python-format +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:363 +#, python-format +msgid "Failed to deploy. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:393 +#, python-format +msgid "RPC do_node_tear_down called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:402 +#, python-format +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgstr "" + +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 +#, python-format +msgid "Failed to tear down. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was already locked by another " +"process. Skip." +msgstr "" + +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 +#, python-format +msgid "RPC validate_driver_interfaces called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:670 +msgid "not supported" +msgstr "" + +#: ironic/conductor/manager.py:689 +#, python-format +msgid "" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" +msgstr "" + +#: ironic/conductor/manager.py:699 +msgid "The node is already in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:700 +msgid "The node is not in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 +msgid "Multi-node TaskManager has no attribute 'node'" +msgstr "" + +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 +msgid "Multi-node TaskManager has no attribute 'driver'" +msgstr "" + +#: ironic/conductor/task_manager.py:226 +msgid "Multi-node TaskManager can't select single node manager from the list" +msgstr "" + +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 +#, python-format +msgid "Failed to change power state to '%(target)s'. Error: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:90 +#, python-format +msgid "" +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." +msgstr "" + +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." +msgstr "" + +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." +msgstr "" + +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:205 +#, python-format +msgid "Parent device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:210 +#, python-format +msgid "Root device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:213 +#, python-format +msgid "Swap device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 +msgid "Failed to detect root device UUID." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 +#, python-format +msgid "Deploy to address %s failed." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:268 +#, python-format +msgid "Command: %s" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:269 +#, python-format +msgid "StdOut: %r" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:270 +#, python-format +msgid "StdErr: %r" +msgstr "" + +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 +#, python-format +msgid "set_power_state called with an invalid power state: %s." +msgstr "" + +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." +msgstr "" + +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:59 +#, python-format +msgid "The following IPMI credentials are not supplied to IPMI driver: %s." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:80 +#, python-format +msgid "" +"IPMI power on failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:110 +#, python-format +msgid "" +"IPMI power off failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:142 +#, python-format +msgid "" +"IPMI power reboot failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:177 +#, python-format +msgid "" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:191 +#, python-format +msgid "" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 +#, python-format +msgid "Invalid boot device %s specified." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:293 +#, python-format +msgid "" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 +msgid "IPMI address not supplied to IPMI driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:197 +#, python-format +msgid "IPMI power %(state)s timed out after %(tries)s retries." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:249 +#, python-format +msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 +#, python-format +msgid "set_power_state called with invalid power state %s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:363 +#, python-format +msgid "Fetching kernel and ramdisk for node %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:393 +#, python-format +msgid "Fetching image %(ami)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 +msgid "Deploy key is not match" +msgstr "" + +#: ironic/drivers/modules/pxe.py:687 +#, python-format +msgid "Parameters %s were not passed to ironic for deploy." +msgstr "" + +#: ironic/drivers/modules/pxe.py:701 +#, python-format +msgid "Unsupported method (%s) passed to PXE driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:722 +#, python-format +msgid "" +"Node %s failed to power off while handling deploy failure. This may be a " +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 +#, python-format +msgid "Error returned from PXE deploy ramdisk: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:748 +msgid "Failure in PXE deploy ramdisk." +msgstr "" + +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "Continuing deployment for node %(node)s, params %(params)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 +msgid "PXE driver failed to continue deployment." +msgstr "" + +#: ironic/drivers/modules/pxe.py:762 +#, python-format +msgid "Deployment to node %s done" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 +#, python-format +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:262 +#, python-format +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:189 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:207 +#, python-format +msgid "Got file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:211 +#, python-format +msgid "Released file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:249 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:253 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/log.py:303 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ironic/openstack/common/log.py:402 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ironic/openstack/common/log.py:453 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ironic/openstack/common/log.py:623 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:84 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:91 +msgid "in fixed duration looping call" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:131 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:138 +msgid "in dynamic looping call" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:43 +#, python-format +msgid "Unexpected argument for periodic task creation: %(arg)s." +msgstr "" + +#: ironic/openstack/common/periodic_task.py:134 +#, python-format +msgid "Skipping periodic task %(task)s because its interval is negative" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:139 +#, python-format +msgid "Skipping periodic task %(task)s because it is disabled" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:177 +#, python-format +msgid "Running periodic task %(full_task_name)s" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:186 +#, python-format +msgid "Error during %(full_task_name)s: %(e)s" +msgstr "" + +#: ironic/openstack/common/policy.py:395 +#, python-format +msgid "Failed to understand rule %(rule)s" +msgstr "" + +#: ironic/openstack/common/policy.py:405 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ironic/openstack/common/policy.py:680 +#, python-format +msgid "Failed to understand rule %(rule)r" +msgstr "" + +#: ironic/openstack/common/processutils.py:127 +#, python-format +msgid "Got unknown keyword args to utils.execute: %r" +msgstr "" + +#: ironic/openstack/common/processutils.py:142 +#, python-format +msgid "Running cmd (subprocess): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:167 +#: ironic/openstack/common/processutils.py:240 +#, python-format +msgid "Result was %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:179 +#, python-format +msgid "%r failed. Retrying." +msgstr "" + +#: ironic/openstack/common/processutils.py:219 +#, python-format +msgid "Running cmd (SSH): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:221 +msgid "Environment not supported over SSH" +msgstr "" + +#: ironic/openstack/common/processutils.py:225 +msgid "process_input not supported over SSH" +msgstr "" + +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ironic/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ironic/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ironic/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ironic/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ironic/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ironic/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ironic/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ironic/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ironic/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ironic/openstack/common/sslutils.py:52 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:55 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:58 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:61 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ironic/openstack/common/sslutils.py:100 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:88 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ironic/openstack/common/strutils.py:184 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:191 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ironic/openstack/common/db/exception.py:44 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:60 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 +msgid "Unsupported id columns type" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ironic/openstack/common/notifier/rpc_notifier.py:45 +#: ironic/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ironic/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 +#, python-format +msgid "Failed to migrate to version %(version)s on engine %(engine)s" +msgstr "" diff -Nru ironic-2014.1~b3/ironic/locale/en_AU/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/en_AU/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/en_AU/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/en_AU/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# English (Australia) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: English (Australia) " -"(http://www.transifex.com/projects/p/openstack/language/en_AU/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: English (Australia) (http://www.transifex.com/projects/p/openstack/language/en_AU/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: en_AU\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,946 +94,1399 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "An unknown exception occurred." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Exception in string format operation" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Invalid backend: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Reloading cached file %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "disabled" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "SSH key file %s not found." +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 -#, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:225 -#, python-format -msgid "Retrieved Node List: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Found Mac address: %s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Error setting %(attr)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:200 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 #, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/base.py:301 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "Cannot load '%(attrname)s' in the base class" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/objects/utils.py:104 -#, python-format -msgid "An object of class %s is required here" +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/openstack/common/excutils.py:64 -#, python-format -msgid "Original exception being dropped: %s" +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/openstack/common/excutils.py:93 +#: ironic/drivers/modules/ssh.py:200 #, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +msgid "SSH key file %s not found." msgstr "" -#: ironic/openstack/common/lockutils.py:105 +#: ironic/drivers/modules/ssh.py:233 #, python-format -msgid "Could not release the acquired lock `%s`" +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/openstack/common/lockutils.py:170 +#: ironic/drivers/modules/ssh.py:264 #, python-format -msgid "Got semaphore \"%(lock)s\"" +msgid "Retrieved Node List: %s" msgstr "" -#: ironic/openstack/common/lockutils.py:179 +#: ironic/drivers/modules/ssh.py:269 #, python-format -msgid "Attempting to grab file lock \"%(lock)s\"" +msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/openstack/common/lockutils.py:189 +#: ironic/drivers/modules/ssh.py:282 #, python-format -msgid "Created lock path: %s" +msgid "Found Mac address: %s" msgstr "" -#: ironic/openstack/common/lockutils.py:207 +#: ironic/drivers/modules/ssh.py:386 #, python-format -msgid "Got file lock \"%(lock)s\" at %(path)s" +msgid "SSH connection cannot be established: %s" msgstr "" -#: ironic/openstack/common/lockutils.py:211 -#, python-format -msgid "Released file lock \"%(lock)s\" at %(path)s" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" msgstr "" -#: ironic/openstack/common/lockutils.py:249 +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 #, python-format -msgid "Got semaphore / lock \"%(function)s\"" +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "Original exception being dropped: %s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "Unexpected exception occurred %d time(s)... retrying." + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "Could not release the acquired lock `%s`" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "Got semaphore \"%(lock)s\"" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "Attempting to grab file lock \"%(lock)s\"" + +#: ironic/openstack/common/lockutils.py:189 +#, python-format +msgid "Created lock path: %s" +msgstr "Created lock path: %s" + +#: ironic/openstack/common/lockutils.py:207 +#, python-format +msgid "Got file lock \"%(lock)s\" at %(path)s" +msgstr "Got file lock \"%(lock)s\" at %(path)s" + +#: ironic/openstack/common/lockutils.py:211 +#, python-format +msgid "Released file lock \"%(lock)s\" at %(path)s" +msgstr "Released file lock \"%(lock)s\" at %(path)s" + +#: ironic/openstack/common/lockutils.py:249 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "Got semaphore / lock \"%(function)s\"" + #: ironic/openstack/common/lockutils.py:253 #, python-format msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" +msgstr "Semaphore / lock released \"%(function)s\"" #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Deprecated: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "Error loading logging config %(log_config)s: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog facility must be one of: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Fatal call to deprecated config: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "task run outlasted interval by %s sec" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "in fixed duration looping call" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "Dynamic looping call sleeping for %.02f seconds" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "in dynamic looping call" #: ironic/openstack/common/periodic_task.py:43 #, python-format @@ -1078,7 +1521,7 @@ #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "No handler for matches of kind %s" #: ironic/openstack/common/policy.py:680 #, python-format @@ -1088,793 +1531,655 @@ #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Got unknown keyword args to utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Running cmd (subprocess): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Result was %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r failed. Retrying." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Running cmd (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Environment not supported over SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input not supported over SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Full set of CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "Caught %s, exiting" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." -msgstr "" +msgstr "Exception during rpc cleanup." -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "Parent process has died unexpectedly, exiting" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Unhandled exception" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Forking too fast, sleeping" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Started child %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Starting %d workers" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "Child %(pid)d killed by signal %(sig)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "Child %(pid)s exited with status %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d not in child list" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "Caught %s, stopping children" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "Waiting on %d children to exit" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "Unable to find cert_file : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "Unable to find ca_file : %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "Unable to find key_file : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "When running server in SSL mode, you must specify both a cert_file and key_file option value in your configuration file" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "Invalid SSL version : %s" #: ironic/openstack/common/strutils.py:88 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" +msgstr "Unrecognised value '%(val)s', acceptable values are: %(acceptable)s" #: ironic/openstack/common/strutils.py:184 #, python-format msgid "Invalid string format: %s" -msgstr "" +msgstr "Invalid string format: %s" #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Unknown byte multiplier: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Invalid Parameter: Unicode is not supported by the current database." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "version should be an integer" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" +msgstr "Sort key supplied was not valid." #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" -msgstr "" +msgstr "Unknown sort direction, must be 'desc' or 'asc'" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 #, python-format -msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 -msgid "Unsupported id columns type" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" +#: ironic/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 "Please specify column %s in col_name_col_instance param. It is required because column has unsupported type by sqlite)." + +#: ironic/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 "col_name_col_instance param has wrong type of column instance for column %s It should be instance of sqlalchemy.Column." + +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 +msgid "Unsupported id columns type" +msgstr "Unsupported id columns type" + #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s not in valid priorities" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problem '%(e)s' attempting to send to notification system. Payload=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Failed to load notifier %s. These notifications will not be sent." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Could not send notification to %(topic)s. Payload=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "Pool creating new connection" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -msgstr "" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." -msgstr "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "Number of call waiters is greater than warning threshold: %d. There could be a MulticallProxyWaiter leak." -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "unpacked context: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID is %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "received %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "no method for message: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "No method for message: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Expected exception during message handling (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Exception during message handling" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Making synchronous call on %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID is %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Making asynchronous cast on %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Making asynchronous fanout cast..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Sending %(event_type)s on %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "An unknown RPC related exception occurred." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Remote error: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: \"%(method)s\" info: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Found duplicate message(%(msg_id)s). Skipping it." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Invalid reuse of an RPC connection." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "Specified RPC version, %(version)s, not supported by this endpoint." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Specified RPC envelope version, %(version)s, not supported by this endpoint." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "Specified RPC version cap, %(version_cap)s, is too low" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "Returning exception %s to caller" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Failed to process message ... skipping it." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Failed to process message ... will requeue." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Reconnecting to AMQP server on %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Connected to AMQP server on %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Unable to connect to AMQP server on %(hostname)s:%(port)d after %(max_retries)d tries: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying again in %(sleep_time)d seconds." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Timed out waiting for RPC response: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Failed to consume message from queue: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Failed to publish message to topic '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "Invalid value for qpid_topology_version: %d" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Failed to process message... skipping it." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Connected to AMQP server on %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Re-established AMQP queues" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Error processing message. Skipping it." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON serialization failed." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Deserialising: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Connecting to %(addr)s with %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Subscribed to %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> bind: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Could not open socket." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" -msgstr "" +msgstr "Subscribing to %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "ZeroMQ socket could not be closed." -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "You cannot recv on this socket." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "You cannot send on this socket." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Running func with context: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Sending reply" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC message did not include method." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Registering reactor" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "In reactor registered" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" +msgstr "Consuming socket" -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Creating proxy for topic: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "Topic contained dangerous characters." -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "Topic socket file creation failed." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "Required IPC directory does not exist at %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Permission denied to IPC directory at %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "Could not create ZeroMQ receiver daemon. Socket may already be in use." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "CONSUMER RECEIVED DATA: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ Envelope version unsupported or unknown." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "Skipping topic registration. Already registered." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "Consumer is a zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Creating payload" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Creating queue socket for reply waiter" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Sending cast" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Cast sent; Waiting reply" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Received message: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Unpacking response" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Unsupported or unknown ZMQ envelope returned." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC Message Invalid." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Sending message(s) to: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "No matchmaker results. Not casting." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "No match from matchmaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Match not found by MatchMaker." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "Matchmaker does not implement registration or heartbeat." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "Matchmaker unregistered: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Register before starting heartbeat." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "No key defining hosts for topic '%s', see ringfile" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" +msgstr "Creating Consumer connection for Service %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/en_GB/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/en_GB/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/en_GB/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/en_GB/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# English (United Kingdom) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: English (United Kingdom) " -"(http://www.transifex.com/projects/p/openstack/language/en_GB/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/openstack/language/en_GB/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,1777 +94,2092 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "An unknown exception occurred." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Exception in string format operation" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Not authorised." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Unacceptable parameters." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "Expected a uuid but received %(uuid)s." -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "Image %(image_id)s is unacceptable: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Resource could not be found." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Image %(image_id)s could not be found." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Not authorised for image %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Invalid image href %(image_href)s." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Could not find config at %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "Snapshot list encountered but no header found!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "'qemu-img info' parsing failed." + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s backed by: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Converted to raw, but format is now %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Invalid backend: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Reloading cached file %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "Could not remove tmpdir: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "Failed to unlink %(path)s, error: %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "Failed to remove dir %(path)s, error: %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', %(extra)s." -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "disabled" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool stdout: '%(out)s', stderr: '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "Building PXE config for deployment %s." + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" -msgstr "" - -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:200 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:301 -#, python-format -msgid "Cannot load '%(attrname)s' in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "An object of class %s is required here" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Original exception being dropped: %s" +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/excutils.py:93 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/openstack/common/lockutils.py:105 -#, python-format -msgid "Could not release the acquired lock `%s`" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/openstack/common/lockutils.py:170 -#, python-format -msgid "Got semaphore \"%(lock)s\"" +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." msgstr "" +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPUs not set; assuming CPU collection broken" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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." + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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." + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "Original exception being dropped: %s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "Unexpected exception occurred %d time(s)... retrying." + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "Could not release the acquired lock `%s`" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "Got semaphore \"%(lock)s\"" + #: ironic/openstack/common/lockutils.py:179 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" -msgstr "" +msgstr "Attempting to grab file lock \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:189 #, python-format msgid "Created lock path: %s" -msgstr "" +msgstr "Created lock path: %s" #: ironic/openstack/common/lockutils.py:207 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Got file lock \"%(lock)s\" at %(path)s" #: ironic/openstack/common/lockutils.py:211 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Released file lock \"%(lock)s\" at %(path)s" #: ironic/openstack/common/lockutils.py:249 #, python-format msgid "Got semaphore / lock \"%(function)s\"" -msgstr "" +msgstr "Got semaphore / lock \"%(function)s\"" #: ironic/openstack/common/lockutils.py:253 #, python-format msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" +msgstr "Semaphore / lock released \"%(function)s\"" #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Deprecated: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "Error loading logging config %(log_config)s: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog facility must be one of: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Fatal call to deprecated config: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "task run outlasted interval by %s sec" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "in fixed duration looping call" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "Dynamic looping call sleeping for %.02f seconds" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "in dynamic looping call" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "Unexpected argument for periodic task creation: %(arg)s." #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "Skipping periodic task %(task)s because its interval is negative" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "Skipping periodic task %(task)s because it is disabled" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Running periodic task %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Error during %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "Failed to understand rule %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "No handler for matches of kind %s" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "Failed to understand rule %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Got unknown keyword args to utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Running cmd (subprocess): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Result was %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r failed. Retrying." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Running cmd (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Environment not supported over SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input not supported over SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Full set of CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "Caught %s, exiting" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." -msgstr "" +msgstr "Exception during rpc cleanup." -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "Parent process has died unexpectedly, exiting" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Unhandled exception" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Forking too fast, sleeping" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Started child %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Starting %d workers" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "Child %(pid)d killed by signal %(sig)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "Child %(pid)s exited with status %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d not in child list" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "Caught %s, stopping children" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "Waiting on %d children to exit" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "Unable to find cert_file : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "Unable to find ca_file : %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "Unable to find key_file : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "When running server in SSL mode, you must specify both a cert_file and key_file option value in your configuration file" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "Invalid SSL version : %s" #: ironic/openstack/common/strutils.py:88 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" +msgstr "Unrecognised value '%(val)s', acceptable values are: %(acceptable)s" #: ironic/openstack/common/strutils.py:184 #, python-format msgid "Invalid string format: %s" -msgstr "" +msgstr "Invalid string format: %s" #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Unknown byte multiplier: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Invalid Parameter: Unicode is not supported by the current database." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "version should be an integer" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "Sort key supplied was not valid." + +#: ironic/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'" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Unrecognised read_deleted value '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "Please specify column %s in col_name_col_instance param. It is required because column has unsupported type by sqlite)." -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "col_name_col_instance param has wrong type of column instance for column %s It should be instance of sqlalchemy.Column." -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" -msgstr "" +msgstr "Unsupported id columns type" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s not in valid priorities" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problem '%(e)s' attempting to send to notification system. Payload=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Failed to load notifier %s. These notifications will not be sent." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Could not send notification to %(topic)s. Payload=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "Pool creating new connection" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -msgstr "" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "unpacked context: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID is %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "received %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "no method for message: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "No method for message: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Expected exception during message handling (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Exception during message handling" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Making synchronous call on %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID is %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Making asynchronous cast on %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Making asynchronous fanout cast..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Sending %(event_type)s on %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "An unknown RPC related exception occurred." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Remote error: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: \"%(method)s\" info: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Found duplicate message(%(msg_id)s). Skipping it." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Invalid reuse of an RPC connection." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "Specified RPC version, %(version)s, not supported by this endpoint." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Specified RPC envelope version, %(version)s, not supported by this endpoint." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "Specified RPC version cap, %(version_cap)s, is too low" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "Returning exception %s to caller" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Failed to process message ... skipping it." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Failed to process message ... will requeue." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Reconnecting to AMQP server on %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Connected to AMQP server on %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Unable to connect to AMQP server on %(hostname)s:%(port)d after %(max_retries)d tries: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying again in %(sleep_time)d seconds." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Timed out waiting for RPC response: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Failed to consume message from queue: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Failed to publish message to topic '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "Invalid value for qpid_topology_version: %d" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Failed to process message... skipping it." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Connected to AMQP server on %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Re-established AMQP queues" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Error processing message. Skipping it." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON serialization failed." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Deserializing: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Connecting to %(addr)s with %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Subscribed to %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> bind: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Could not open socket." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "Subscribing to %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "You cannot recv on this socket." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "You cannot send on this socket." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Running func with context: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Sending reply" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC message did not include method." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Registering reactor" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "In reactor registered" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" +msgstr "Consuming socket" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Creating proxy for topic: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" +msgstr "Topic contained dangerous characters." -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "Topic socket file creation failed." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "Required IPC directory does not exist at %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Permission denied to IPC directory at %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "Could not create ZeroMQ receiver daemon. Socket may already be in use." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "CONSUMER RECEIVED DATA: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ Envelope version unsupported or unknown." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "Skipping topic registration. Already registered." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "Consumer is a zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Creating payload" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Creating queue socket for reply waiter" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Sending cast" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Cast sent; Waiting reply" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Received message: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Unpacking response" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Unsupported or unknown ZMQ envelope returned." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC Message Invalid." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Sending message(s) to: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "No matchmaker results. Not casting." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "No match from matchmaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Match not found by MatchMaker." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "Matchmaker does not implement registration or heartbeat." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "Matchmaker unregistered: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Register before starting heartbeat." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "No key defining hosts for topic '%s', see ringfile" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" +msgstr "Creating Consumer connection for Service %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/en_US/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/en_US/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/en_US/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/en_US/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" +"POT-Creation-Date: 2014-03-28 06:06+0000\n" "PO-Revision-Date: 2013-11-12 16:15+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: English (United States) " @@ -18,82 +18,71 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format msgid "Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,735 +93,958 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 +#: ironic/common/exception.py:225 msgid "An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" "Can not change instance association while node %(node)s is in power state" " %(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" "Cannot complete the requested action because chassis %(chassis)s contains" " nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" "Service type %(service_type)s with endpoint type %(endpoint_type)s not " "found in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor " +"workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" "A conductor with hostname %(hostname)s was previously registered. " "Updating registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" "RPC change_node_power_state called for node %(node)s. The desired new " "state is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node " +"state %(actual)s does not match expected state '%(state)s'. Updating DB " +"state to '%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" "During sync_power_state, could not get power state for node %(node)s. " "Error: %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected " +"state '%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" "During sync_power_state, node %(node)s was not found and presumed deleted" " by another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" "RPC change_node_maintenance_mode called for node %(node)s with " "maintanence mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:879 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" "Not going to change_node_power_state because current state = requested " "state = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while " +"aborting. More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" "IPMI get power state failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" "IPMI get power state for node %(node_id)s returns the following details:" " %(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" "IPMI set boot device failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one " +"of %(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:432 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" "Can not validate PXE bootloader. The following parameters were not passed" " to ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason:" +" %(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:129 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:156 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:357 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:387 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:485 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP " +"BOOT options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:504 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:508 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node" +" %(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:543 ironic/drivers/modules/ssh.py:377 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:554 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration " +"file or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:664 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:681 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:695 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:716 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " @@ -840,87 +1052,283 @@ "maintenance mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:728 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:740 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:742 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:745 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:754 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:756 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:111 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:136 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:159 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:175 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:182 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:187 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:196 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:229 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:260 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:265 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:278 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:382 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after " +"%(retries)d retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node " +"%(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1352,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1375,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1537,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1640,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1731,431 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" " \"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" "Specified RPC envelope version, %(version)s, not supported by this " "endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/es/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/es/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/es/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/es/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,90 @@ -# Spanish translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# Alberto Molina Coballes , 2014 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" -"Last-Translator: openstackjenkins \n" -"Language-Team: Spanish " -"(http://www.transifex.com/projects/p/openstack/language/es/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 19:40+0000\n" +"Last-Translator: Alberto Molina Coballes \n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/openstack/language/es/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" -msgstr "" +msgstr "Método no especificado" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." -msgstr "" - -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" +msgstr "id de chasis no especificado." -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." -msgstr "" +msgstr "id de nodo no especificado." -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" -msgstr "" +msgstr "El límite debe ser positivo" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,847 +95,1290 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" -msgstr "" +msgstr "Sirviendo en http://%(host)s:%(port)s" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" -msgstr "" +msgstr "Configuración:" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Ha ocurrido una excepción desconocida." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Excepción en la operación de formato de serie" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "No Autorizado." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." -msgstr "" +msgstr "Operación no permitida." -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Parámetros inaceptables." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." +msgstr "Conflicto." + +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:122 msgid "Invalid resource state." -msgstr "" +msgstr "Estado de recurso no válido." -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "Se esperaba un uuid pero se ha recibido %(uuid)s." -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." -msgstr "" +msgstr "Se espera un uuid o entero pero se ha recibido %(identity)s." -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." -msgstr "" +msgstr "Se espera una dirección MAC pero se ha recibido %(mac)s." -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "La imagen %(image_id)s es inaceptable: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "No se ha podido encontrar el recurso." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "No se ha podido encontrar la imagen %(image_id)s. " -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." -msgstr "" +msgid "Node %(node)s could not be found." +msgstr "No se ha podido encontrar el nodo %(node)s." -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." -msgstr "" +msgstr "Nodo %(node)s está asociado a la instancia %(instance)s." -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." -msgstr "" +msgstr "No se ha podido encontrar el puerto %(port)s." -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 #, python-format -msgid "Chassis %(chassis)s could not be found." +msgid "Update MAC address on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "No se ha podido encontrar el chasis %(chassis)s." + +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." -msgstr "" +msgstr "Ha fallado el establecimiento de conexión SSH al host %(host)s." -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" -msgstr "" +msgstr "Tipo de objeto no soportado %(objtype)s" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" -msgstr "" +msgstr "No se puede ejecutar %(method)s en un objecto huérfano %(objtype)s" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" -msgstr "" +msgstr "Versión %(objver)s de %(objname)s no está soportada" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "La conexión con el host glance %(host)s:%(port)s ha fallado: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "No está autorizado para la imagen %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Href de imagen %(image_href)s no válida." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" -msgstr "" +msgstr "El endpoint proporcionado no es válido" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." -msgstr "" +msgstr "No es posible comunicarse con el servidor." -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "No se ha podido encontrar configuración en %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "Se ha encontrado la lista de instantáneas pero no se ha encontrado ninguna cabecera." + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "Se ha encontrado un error en el análisis de 'qemu-img info'." + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s respaldado por: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Convertido a sin formato, pero el formato es ahora %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." +msgstr "Fichero JSON que representa la política." + +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" -msgstr "" +msgstr "Ha fallado la conexión SSH: %s" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "backend inválido: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Volviendo a cargar el archivo en memoria caché %s " -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "No se ha podido eliminar directorio temporal: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "No se ha podido desenlazar %(path)s, error: %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "No se ha podido eliminar directorio %(path)s, error: %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "No se ha podido crear enlace simbólico de %(source)s a %(link)s, error: %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "Error al contactar con el servidor de glance '%(host)s:%(port)s' para '%(method)s', %(extra)s." -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" -msgstr "" +msgstr "no soportado" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" +msgstr "El nodo no se encuentra en modo mantenimiento" + +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "deshabilitado" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "Habilitando" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "Deshabilitando" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 -msgid "Failed to detect root device UUID." +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:229 +msgid "Failed to detect root device UUID." +msgstr "Ha fallado la detección del dispositivo raíz UUID." + +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" -msgstr "" +msgstr "Comando: %s" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" -msgstr "" +msgstr "Salida estándar: %r" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" -msgstr "" +msgstr "Salida estándar de errores: %r" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool salida estándar: '%(out)s', error estándar: '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." +msgstr "'%s' no es un valor entero." + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "Creando configuración de PXE para el despliegue %s." + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "SSH key file %s not found." +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 -#, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:225 -#, python-format -msgid "Retrieved Node List: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "No se han encontrado pools de almacenamiento para ironic" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Checking Node: %s's Mac address." +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "SSH connection cannot be established: %s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:54 -#, python-format -msgid "Error setting %(attr)s" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/base.py:200 -#, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/base.py:301 +#: ironic/drivers/modules/seamicro.py:488 #, python-format -msgid "Cannot load '%(attrname)s' in the base class" +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "fichero de clave ssh %s no encontrado." + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPU no establecidas; suponiendo que la colección de CPU se ha interrumpido" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 no tiene un disco utilizable de %(requested_disk)s MB, solo tiene %(usable_disk_mb)s MB de disco que se puede utilizar." + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 no tiene una RAM utilizable de %(requested_ram)s MB, solo tiene %(usable_ram)s MB de RAM que se puede utilizar." + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "Error al establecer %(attr)s" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "Incapaz de instanciar tipo de objeto no registrado %(objtype)s" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -960,921 +1394,793 @@ #: ironic/openstack/common/excutils.py:64 #, python-format msgid "Original exception being dropped: %s" -msgstr "" +msgstr "Se está descartando excepción original: %s" #: ironic/openstack/common/excutils.py:93 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "La excepción inesperada ha ocurrido %d vez(veces)... reintentando." + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" -msgstr "" +msgstr "No se ha podido liberar el bloqueo adquirido `%s`" #: ironic/openstack/common/lockutils.py:170 #, python-format msgid "Got semaphore \"%(lock)s\"" -msgstr "" +msgstr "Semáforo obtenido \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:179 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" -msgstr "" +msgstr "Intentando bloquear archivo \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:189 #, python-format msgid "Created lock path: %s" -msgstr "" +msgstr "Candado creado ruta: %s" #: ironic/openstack/common/lockutils.py:207 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Se ha bloqueado el archivo \"%(lock)s\" en %(path)s" #: ironic/openstack/common/lockutils.py:211 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Se ha liberado el bloqueo de archivo \"%(lock)s\" en %(path)s" #: ironic/openstack/common/lockutils.py:249 #, python-format msgid "Got semaphore / lock \"%(function)s\"" -msgstr "" +msgstr "Semáforo / bloqueo obtenido \"%(function)s\"" #: ironic/openstack/common/lockutils.py:253 #, python-format msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" +msgstr "Semáforo / bloqueo liberado \"%(function)s\"" #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "En desuso: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "Error al cargar la configuración de registro %(log_config)s: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "El recurso syslog debe ser uno de: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Llamada muy grave a configuración en desuso: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "la ejecución de tarea ha durado %s seg. más que el intervalo" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "en llamada en bucle de duración fija" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "Llamada dinámica repetitiva, en espera por %.02f segundos" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "en llamada en bucle dinámica" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "Argumento inesperado para la creación de tarea periódica: %(arg)s." #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "Omitiendo la tarea periódica %(task)s porque el intervalo es negativo" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "Omitiendo la tarea periódica %(task)s porque está inhabilitada" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Ejecutando tarea periódica %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Error durante %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "No se ha podido comprender la regla %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "No hay manejador para coincidencias de clase %s" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "No se ha podido comprender la regla %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Se han obtenido argumentos de palabra clave desconocidos en utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Ejecutando cmd (subprocesos): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "El resultado fue %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r ha fallado. Volviendo a intentarlo." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "corriendo cmd (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Entorno no soportado a través de SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "entrada de proceso no soporta a través de SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Conjunto completo de CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "Se ha captado %s, saliendo" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." -msgstr "" +msgstr "Excepción durante limpieza de rpc." -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "El proceso padre se ha detenido inesperadamente, saliendo" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Excepción no controlada" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Bifurcación demasiado rápida, en reposo" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Se ha iniciado el hijo %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Iniciando %d trabajadores" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "Hijo %(pid)d matado por señal %(sig)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "El hijo %(pid)s ha salido con el estado %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "El pid %d no está en la lista de hijos" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "Se ha captado %s, deteniendo hijos" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "En espera de %d hijos para salir" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "No se puede encontrar cert_file: %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "No se puede encontrar ca_file: %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "No se puede encontrar key_file: %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "Al ejecutar el servidor en modalidad SSL, debe especificar un valor para las opciones cert_file y key_file en el archivo de configuración" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "Versión SSL inválida : %s" #: ironic/openstack/common/strutils.py:88 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" +msgstr "Valor '%(val)s' no reconocido, los valores aceptables son: %(acceptable)s" #: ironic/openstack/common/strutils.py:184 #, python-format msgid "Invalid string format: %s" -msgstr "" +msgstr "Formato inválido de cadena: %s" #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Multiplicador de bytes desconocido: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Parámetro no válido: la base de datos actual no soporta Unicode." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "la versión debe ser un entero" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "La clave de clasificación proporcionada no es válida. " + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "Dirección de clasificación desconocida, debe ser 'desc' o ' asc'" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Valor de read_deleted no reconocido '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "Especifique la columna %s en el parámetro col_name_col_instance. Es necesario porque la columna tiene un tipo no soportado por sqlite)." -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "col_name_col_instance param tiene el tipo incorrecto de instancia de columna para la columna %s. Debe ser una instancia de sqlalchemy.Column." -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" -msgstr "" +msgstr "Tipo de identificador de columnas no soportado" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s no está en las prioridades válidas" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problema '%(e)s' al intentar enviar al sistema de notificación. Carga útil=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "No se ha podido cargar el notificador %s. Estas notificaciones no se enviarán." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "No se ha podido enviar notificación a %(topic)s. Carga útil=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "La agrupación está creando una conexión nueva" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -msgstr "" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "No hay subprocesos de llamada esperando por msg_id : %(msg_id)s, mensaje : %(data)s" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "contenido desempaquetado: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID es %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "recibido %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "no hay método para el mensaje: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "No hay método para el mensaje: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Se esperaba excepción durante el manejo de mensajes (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Excepción durante el manejo de mensajes" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Realizando llamada síncrona en %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID es %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Realizando difusión asíncrona en %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Realizando difusión de diseminación asíncrona..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Enviando %(event_type)s sobre %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "Se ha producido una excepción desconocida relacionada con RPC." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Error remoto: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Tiempo de espera agotado en espera de una respuesta RPC - tema: \"%(topic)s\", método RPC: \"%(method)s\" información: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Se ha encontrado un mensaje duplicado (%(msg_id)s). Se va a saltar." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Reuso invalido de una coneccion RPC" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "Versión de RPC especificada, %(version)s, no soportada por este punto final." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Versión de sobre de RPC especificada, %(version)s, no soportada por este punto final." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "Límite de versión RPC especificada, %(version_cap)s, es muy baja" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "Devolviendo excepción %s al interlocutor" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Fallo al procesar mensaje ... omitiendo." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Fallo al procesar mensaje ... se encolará nuevamente." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Volviendo a conectar con el servidor AMQP en %(hostname)s:%(port)d " -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Conectado al servidor AMQP en %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "No se ha podido conectar con el servidor AMQP en %(hostname)s:%(port)d después de %(max_retries)d intentos: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "El servidor AMQP en %(hostname)s:%(port)d es inalcanzable: %(err_str)s. Se volverá a intentar en %(sleep_time)d segundos." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "No se ha podido declarar consumidor para el tema '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Tiempo de espera excedido al esperar respuesta de RPC: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "No se ha podido consumir el mensaje de la cola: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "No se ha podido publicar el mensaje para el tema '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "No se ha podido procesar el mensaje... saltándoselo." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "No se puede conectar con el servidor AMQP: %(e)s. En reposo durante %(delay)s segundos" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Conectado con el servidor AMQP en %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Colas AMQP reestablecidas" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Error al procesar el mensaje. Saltándolo." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "Ha fallado la serialización JSON." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Deserializando: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Conectando a %(addr)s con %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Suscrito a %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> enlace: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "No se ha podido abrir el socket." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" -msgstr "" +msgstr "Subscribiéndose a %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "No se puede cerrar el socket ZeroMQ." -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "No puede recibir en este socket." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "No puede enviar en este socket." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Ejecutando función con contexto: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Enviando respuesta" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "El mensaje de RPC no incluía método." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Registrando reactor" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "Registrado en reactor" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" +msgstr "Consumiendo socket" -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Creando proxy para el tema: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "El tema contenía caracteres peligrosos." -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "Ha fallado la creación de archivo de socket de tema." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Almacenamiento intermedio de retraso por tema local para el tema %(topic)s. Descartando mensaje." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "El directorio IPC requerido no existe en %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Permiso denegado para el directorio IPC en %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "No se ha podido crear el daemon de destinatario ZeroMQ. Es posible que ya se esté utilizando el socket." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "EL CONSUMIDOR HA RECIBIDO DATOS: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "Versión de sobre de ZMQ no soportada o desconocida." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "Se va a saltar el registro del tema. Ya está registrado." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "El consumidor es un zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Creando carga útil" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Creando socket de cola para el elemento e espera de respuesta" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Enviando difusión" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Difusión enviada; esperando respuesta" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Mensaje recibido: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Desempaquetando respuesta" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Se ha devuelto un sobre de ZMQ no soportado o desconocido." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "Mensaje de RPC no válido." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Enviando mensaje(s) a: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "No hay resultados de Matchmaker. No hay difusión." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "No hay coincidencias de Matchmaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s está obsoleto; use %(new)s en su lugar" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Coincidencia no encontrada por MatchMaker." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "Matchmaker no implementa registro o pulsación." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "Matchmaker no registrado: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Registre antes de iniciar la pulsación." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "No hay ninguna clave que defina hosts para el tema '%s', consulte ringfile" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" +msgstr "Creando conexión de consumidor para el servicio %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/es_MX/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/es_MX/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/es_MX/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/es_MX/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Spanish (Mexico) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/openstack/language/es_MX/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Ha ocurrido un error desconocido." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Sin autorización." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:798 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." -msgstr "" - -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/eu/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/eu/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/eu/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/eu/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Basque translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Basque (http://www.transifex.com/projects/p/openstack/language/eu/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/eu_ES/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/eu_ES/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/eu_ES/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/eu_ES/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" +"POT-Creation-Date: 2014-03-28 06:06+0000\n" "PO-Revision-Date: 2013-11-15 02:27+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Basque (Spain) " @@ -18,82 +18,71 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format msgid "Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,735 +93,958 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 +#: ironic/common/exception.py:225 msgid "An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" "Can not change instance association while node %(node)s is in power state" " %(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" "Cannot complete the requested action because chassis %(chassis)s contains" " nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" "Service type %(service_type)s with endpoint type %(endpoint_type)s not " "found in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor " +"workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" "A conductor with hostname %(hostname)s was previously registered. " "Updating registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" "RPC change_node_power_state called for node %(node)s. The desired new " "state is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node " +"state %(actual)s does not match expected state '%(state)s'. Updating DB " +"state to '%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" "During sync_power_state, could not get power state for node %(node)s. " "Error: %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected " +"state '%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" "During sync_power_state, node %(node)s was not found and presumed deleted" " by another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" "RPC change_node_maintenance_mode called for node %(node)s with " "maintanence mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:879 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" "Not going to change_node_power_state because current state = requested " "state = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while " +"aborting. More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" "IPMI get power state failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" "IPMI get power state for node %(node_id)s returns the following details:" " %(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" "IPMI set boot device failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one " +"of %(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:432 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" "Can not validate PXE bootloader. The following parameters were not passed" " to ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason:" +" %(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:129 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:156 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:357 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:387 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:485 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP " +"BOOT options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:504 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:508 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node" +" %(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:543 ironic/drivers/modules/ssh.py:377 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:554 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration " +"file or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:664 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:681 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:695 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:716 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " @@ -840,87 +1052,283 @@ "maintenance mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:728 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:740 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:742 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:745 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:754 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:756 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:111 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:136 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:159 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:175 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:182 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:187 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:196 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:229 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:260 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:265 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:278 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:382 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after " +"%(retries)d retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node " +"%(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1352,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1375,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1537,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1640,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1731,431 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" " \"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" "Specified RPC envelope version, %(version)s, not supported by this " "endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/fa/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/fa/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/fa/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/fa/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Persian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-15 02:28+0000\n" -"Last-Translator: Tom Fifield \n" -"Language-Team: Persian " -"(http://www.transifex.com/projects/p/openstack/language/fa/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Persian (http://www.transifex.com/projects/p/openstack/language/fa/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/fi_FI/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/fi_FI/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/fi_FI/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/fi_FI/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Finnish (Finland) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/openstack/language/fi_FI/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: fi_FI\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/fil/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/fil/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/fil/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/fil/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Filipino translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Filipino " -"(http://www.transifex.com/projects/p/openstack/language/fil/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Language-Team: Filipino (http://www.transifex.com/projects/p/openstack/language/fil/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: fil\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/fr/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/fr/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/fr/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/fr/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,92 @@ -# French translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# steff00 , 2013 +# Sonny , 2014 +# steff00 , 2013 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: French " -"(http://www.transifex.com/projects/p/openstack/language/fr/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Language-Team: French (http://www.transifex.com/projects/p/openstack/language/fr/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" -msgstr "" +msgstr "Methode non spécifiée" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." -msgstr "" +msgstr "L'identifiant du noeud n'a pas été spécifié" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" -msgstr "" +msgstr "La limite doit être positive" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,1777 +97,2092 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" -msgstr "" +msgstr "Configuration :" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Une exception inconnue s'est produite." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Exception dans l'opération de format de chaîne" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Non autorisé." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." -msgstr "" +msgstr "Opération non permise" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Paramètres non acceptables" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "UUID attendu mais %(uuid)s reçu." -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "L'image %(image_id)s est inacceptable : %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Ressource introuvable." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "L'image %(image_id)s est introuvable." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "La connexion à l'hôte Glance %(host)s : %(port)s a échoué : %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Non autorisé pour l'image %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "href %(image_href)s d'image non valide." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" -msgstr "" +msgstr "Connexion échouée" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Configuration introuvable dans %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "Liste d'instantanés trouvée mais aucun en-tête trouvé !" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "Echec de l'analyse syntaxique de 'qemu-img info'." + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s sauvegardé par : %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Converti au format brut, mais le format est maintenant %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Backend invalide : %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "rechargement du fichier du cache %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "Impossible de supprimer tmpdir : %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "Echec de la suppression du lien %(path)s, erreur : %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "Echec de la suppression du répertoire %(path)s, erreur : %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "Echec de la création du lien symlink de %(source)s vers %(link)s, erreur : %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "Erreur lors du contact du serveur glance '%(host)s:%(port)s' pour '%(method)s', %(extra)s." -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "désactivé" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool stdout : '%(out)s', stderr : '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "Génération de la configuration de PXE pour le déploiement %s." + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:200 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:301 -#, python-format -msgid "Cannot load '%(attrname)s' in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "An object of class %s is required here" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Original exception being dropped: %s" +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/excutils.py:93 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/openstack/common/lockutils.py:105 -#, python-format -msgid "Could not release the acquired lock `%s`" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPU non défini ; collection CPU peut-être rompue" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 n'a pas de disque utilisable de %(requested_disk)s Mo, seulement un disque de %(usable_disk_mb)s Mo." + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 ne dispose pas d'une mémoire RAM utilisable de %(requested_ram)s Mo, seulement %(usable_ram)s Mo." + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" msgstr "" +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "Exception d'origine en cours de suppression : %s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "Exception inattendue survenue %d fois... Nouvel essai." + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "Les objets message ne supportent pas l'addition." + +#: ironic/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 "Les objets message ne supportent pas str() parce qu'il peuvent contenir des caractères non-ascii. Utiliser unicode() ou translate() à la place." + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "Impossible de libérer le verrou acquis `%s`" + #: ironic/openstack/common/lockutils.py:170 #, python-format msgid "Got semaphore \"%(lock)s\"" -msgstr "" +msgstr "Sémaphore \"%(lock)s\" obtenu" #: ironic/openstack/common/lockutils.py:179 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" -msgstr "" +msgstr "Tentative d'appropriation du fichier verrouillé \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:189 #, python-format msgid "Created lock path: %s" -msgstr "" +msgstr "Chemin de verrou créé: %s" #: ironic/openstack/common/lockutils.py:207 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Verrou de fichier \"%(lock)s\" obtenu au niveau de %(path)s" #: ironic/openstack/common/lockutils.py:211 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Verrou de fichier \"%(lock)s\" libéré au niveau de %(path)s" #: ironic/openstack/common/lockutils.py:249 #, python-format msgid "Got semaphore / lock \"%(function)s\"" -msgstr "" +msgstr "Sémaphore / verrou \"%(function)s\" obtenu" #: ironic/openstack/common/lockutils.py:253 #, python-format msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" +msgstr "Sémaphore / verrou \"%(function)s\" libéré" #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Obsolète : %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "Erreur lors du chargement de la configuration %(log_config)s: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "la fonction syslog doit correspondre à l'une des options suivantes : %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Appel fatal adressé à une configuration obsolète : %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "durée d'exécution de la tâche supérieure à %s sec" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "dans l'appel en boucle de durée fixe" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "La boucle dynamique passe en veille pour %.02f secondes" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "dans l'appel en boucle dynamique" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "Argument inattendu pour la création de tâche périodique : %(arg)s." #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "Tâche périodique %(task)s ignorée car son intervalle est négatif" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "Tâche périodique %(task)s car elle est désactivée" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Exécution de la tâche périodique %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Erreur pendant %(full_task_name)s : %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "Impossible de comprendre la règle %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "Aucun gestionnaire pour les correspondances de type %s" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "Impossible de comprendre la règle %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Arguments de mot clé inconnus obtenus pour utils.execute : %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Execution de la commande (sous-processus) : %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Le résultat était %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "Echec de %r. Nouvelle tentative." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Execution de la cmd (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Environnement non pris en charge sur SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input non pris en charge sur SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Ensemble complet de CONF :" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "%s interceptée, sortie" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." -msgstr "" +msgstr "Exception pendant le nettoyage rpc." -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "Processus parent arrêté de manière inattendue, sortie" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Exception non gérée" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Bifurcation trop rapide, pause" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Enfant démarré %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Démarrage des travailleurs %d" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "Enfant %(pid)d arrêté par le signal %(sig)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "Processus fils %(pid)s terminé avec le status %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "PID %d absent de la liste d'enfants" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "%s interceptée, arrêt de l'enfant" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "En attente %d enfants pour sortie" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "Impossible de trouver cert_file : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "Impossible de trouver ca_file : %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "Impossible de trouver key_file : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "Lors de l'exécution du serveur en mode SSL, vous devez spécifier une valeur d'option cert_file et key_file dans votre fichier de configuration" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "Version de SSL invalide : %s" #: ironic/openstack/common/strutils.py:88 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" +msgstr "Valeur inconnue '%(val)s', les valeurs acceptées sont: %(acceptable)s" #: ironic/openstack/common/strutils.py:184 #, python-format msgid "Invalid string format: %s" -msgstr "" +msgstr "Format de chaine de caractères non valide : %s" #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Multiplicateur d'octets inconnu : %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Paramètre non valide : Unicode n'est pas pris en charge par la base de données actuelle." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "la version doit être un entier" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" -msgstr "" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "Les tables \"%s\" ont une collation non utf8, assurez-vous que pour toutes les tables CHARSET=utf8." -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." -msgstr "" +#: ironic/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 "La base de données n'est pas versionnée, mais contient des tables. Veuillez indiquer manuellement la version courante du schéma." #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "La clé de tri fournie n'était pas valide." + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "Sens de tri inconnu, doit être 'desc' ou 'asc'" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Valeur read_deleted non reconnue '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "Spécifiez la colonne %s dans le paramètre col_name_col_instance. Ceci est obligatoire car la colonne a un type non pris en charge dans sqlite)." -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "Le paramètre col_name_col_instance contient un type d'instance de colonne incorrect pour la colonne %s. Il devrait être une instance de sqlalchemy.Column." -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" -msgstr "" +msgstr "Type de colonnes id non pris en charge" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s pas dans les priorités valides" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problème '%(e)s' lors de la tentative d'envoi au système de notification. Contenu = %(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Echec du chargement du notificateur %s. Ces notifications ne seront pas envoyées." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Impossible d'envoyer une notification à %(topic)s. Contenu = %(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "Pool créant une nouvelle connexion" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -msgstr "" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "Pas d'unité d'exécution appelante en attente de %(msg_id)s, message : %(data)s" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "Contexte décompacté : %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID est %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "%s reçu" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "Pas de méthode pour le message : %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Pas de méthode pour le message : %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Exception attendue pendant le traitement des messages (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Exception pendant le traitement des messages" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Exécution d'un appel synchrone sur %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID est %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Exécution d'un transtype asynchrone sur %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Exécution d'un transtypage de sortance..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Envoi de %(event_type)s sur %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "Exception d'appel de procédure distante inconnue." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Erreur distante : %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Délai d'attente de la réponse RPC dépassée : topic : \"%(topic)s\", Méthode RPC: \"%(method)s infos: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Message en double trouvé (%(msg_id)s). Message ignoré." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Réutilisation invalide d'une connexion RPC" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "Version d'appel de procédure distante, %(version)s, non prise en charge par ce noeud final." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Version spécifiée d'enveloppe d'appel d'une procédure distante, %(version)s, non prise en charge par ce noeud final." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "Le plafond de version spécifié pour les appel de procédure distante, %(version_cap)s, est trop bas" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "Renvoi de l'exception %s à l'appelant" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Echec de traitement du message... Message ignoré." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Échec de traitement du message... Message remis en file d'attente." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Reconnexion au serveur AMQP sur %(hostname)s : %(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Connecté au serveur AMQP sur %(hostname)s : %(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Connexion impossible au serveur AMQP sur %(hostname)s:%(port)d après %(max_retries)d tentative(s) : %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "Le serveur AMQP sur %(hostname)s:%(port)d est inaccessible : %(err_str)s. Nouvelle tentative dans %(sleep_time)d secondes." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Echec de la déclaration du consommateur pour la rubrique '%(topic)s' : %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Dépassement du délai d'attente pour la réponse à l'appel de procédure distante : %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Echec de la consommation du message depuis la file d'attente : %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Echec de la publication du message dans la rubrique '%(topic)s' : %(err_str)s" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "Valeur non valide pour qpid_topology_version: %d" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Echec du traitement du message... Message ignoré." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "Impossible de se connecter au serveur AMQP : %(e)s. En veille pendant %(delay)s secondes" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Connecté au serveur AMQP sur %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Files d'attente AMQP rétablies" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Erreur lors du traitement du message. Message ignoré." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "Echec de la sérialisation JSON." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Désérialisation : %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Connexion à %(addr)s avec %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Abonné à %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> liaison : %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Impossible d'ouvrir le socket." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "Abonnement à %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "Vous ne pouvez pas recevoir sur ce socket." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "Vous ne pouvez pas envoyer sur ce socket." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Exécution de la fonction avec le contexte : %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Envoi d'une réponse" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "Le message d'appel de procédure distante n'a pas inclus la méthode." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Enregistrement de Reactor" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "Reactor entrant enregistré" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" +msgstr "Consommation de socket" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Création du proxy pour la rubrique : %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" +msgstr "Rubrique contenant des caractères dangereux." -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "La création du fichier socket de la rubrique a échoué." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Mémoire tampon de commandes en attente par rubrique locale saturée pour la rubrique %(topic)s. Suppression du message." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "Répertoire IPC requis n'existe pas à %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Permission refusée au répertoire IPC à %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "Impossible de créer le démon récepteur ZeroMQ. Le socket est sans doute déjà en cours d'utilisation." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "DONNEES RECUES PAR LE CONSOMMATEUR : %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "Version de l'enveloppe ZMQ non prise en charge ou inconnue." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "Passez l'enregistrement de la rubrique. Rubrique déjà enregistrée." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "Le consommateur est un zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Création de charge utile" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Création du socket de file d'attente pour l'unité en attente de réponse" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Envoi de transtypage" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Transtypage envoyé ; attente de la réponse" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Message reçu : %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Décompression de la réponse" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Enveloppe ZMQ non prise en charge ou inconnue renvoyée." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "Message appel de procédure distante non valide." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Envoi de message(s) à : %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "Aucun résultat du matchmaker. Pas de transtypage." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "Aucune correspondance du matchmaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s est obsolète; utiliser plutôt %(new)s" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Aucune correspondance trouvée par MatchMaker." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "Matchmaker n'implémente pas d'enregistrement ou de pulsation." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "Matchmaker non enregistré : %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Enregistre avant le début des pulsations." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "Aucune clé définissant les hôtes pour la rubrique '%s'. Voir le fichier de clés." -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" +msgstr "Création de la connexion Consommateur pour le service %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/gl/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/gl/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/gl/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/gl/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Galician translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Galician " -"(http://www.transifex.com/projects/p/openstack/language/gl/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/openstack/language/gl/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/he/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/he/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/he/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/he/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Hebrew translations for ironic. +# Translations template for ironic. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2014-01-17 14:27+0000\n" -"Last-Translator: Tom Fifield \n" -"Language-Team: Hebrew " -"(http://www.transifex.com/projects/p/openstack/language/he/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/openstack/language/he/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:798 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,502 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/he_IL/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/he_IL/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/he_IL/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/he_IL/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Hebrew (Israel) translations for ironic. +# Translations template for ironic. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2014-02-01 00:01+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Hebrew (Israel) (http://www.transifex.com/projects/p/openstack/language/he_IL/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: he_IL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Node %s can't be deleted because it's not powered off" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:763 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." -msgstr "" - -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,452 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/hi/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/hi/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/hi/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/hi/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Hindi translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Hindi " -"(http://www.transifex.com/projects/p/openstack/language/hi/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Hindi (http://www.transifex.com/projects/p/openstack/language/hi/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/hr/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/hr/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/hr/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/hr/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,89 @@ -# Croatian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Croatian (http://www.transifex.com/projects/p/openstack/language/hr/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/hu/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/hu/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/hu/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/hu/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Hungarian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Hungarian (http://www.transifex.com/projects/p/openstack/language/hu/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/id/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/id/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/id/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/id/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Indonesian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Indonesian (http://www.transifex.com/projects/p/openstack/language/id/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ironic.pot ironic-2014.1~rc1/ironic/locale/ironic.pot --- ironic-2014.1~b3/ironic/locale/ironic.pot 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ironic.pot 2014-04-01 19:49:34.000000000 +0000 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: ironic jenkins.ironic.propose.translation.update.88\n" +"Project-Id-Version: ironic jenkins.ironic.propose.translation.update.140\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" +"POT-Creation-Date: 2014-03-28 06:06+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,82 +17,71 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format msgid "Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -103,735 +92,958 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 +#: ironic/common/exception.py:225 msgid "An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" "Can not change instance association while node %(node)s is in power state" " %(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" "Cannot complete the requested action because chassis %(chassis)s contains" " nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" "Service type %(service_type)s with endpoint type %(endpoint_type)s not " "found in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor " +"workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" "A conductor with hostname %(hostname)s was previously registered. " "Updating registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" "RPC change_node_power_state called for node %(node)s. The desired new " "state is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node " +"state %(actual)s does not match expected state '%(state)s'. Updating DB " +"state to '%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" "During sync_power_state, could not get power state for node %(node)s. " "Error: %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state does not match expected " +"state '%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" "During sync_power_state, node %(node)s was not found and presumed deleted" " by another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" "RPC change_node_maintenance_mode called for node %(node)s with " "maintanence mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" "Not going to change_node_power_state because current state = requested " "state = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while " +"aborting. More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" "IPMI get power state failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" "IPMI get power state for node %(node_id)s returns the following details:" " %(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" "IPMI set boot device failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one " +"of %(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:432 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" "Can not validate PXE bootloader. The following parameters were not passed" " to ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason:" +" %(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:129 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:156 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:357 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:387 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:485 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP " +"BOOT options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:504 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:508 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node" +" %(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:543 ironic/drivers/modules/ssh.py:377 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:554 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration " +"file or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:664 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:681 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:695 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:716 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " @@ -839,87 +1051,283 @@ "maintenance mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:728 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:740 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:742 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:745 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:754 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:756 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:111 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:136 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:159 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:175 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:182 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:187 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:196 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:229 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:260 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:265 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:278 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:382 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after " +"%(retries)d retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node " +"%(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -943,7 +1351,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -966,6 +1374,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1118,64 +1536,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1221,56 +1639,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1297,451 +1730,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" " \"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" "Specified RPC envelope version, %(version)s, not supported by this " "endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" diff -Nru ironic-2014.1~b3/ironic/locale/is_IS/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/is_IS/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/is_IS/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/is_IS/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Icelandic (Iceland) translations for ironic. +# Translations template for ironic. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2014-01-02 13:42+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Icelandic (Iceland) (http://www.transifex.com/projects/p/openstack/language/is_IS/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: is_IS\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:798 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,520 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/it/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/it/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/it/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/it/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Italian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Italian " -"(http://www.transifex.com/projects/p/openstack/language/it/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Italian (http://www.transifex.com/projects/p/openstack/language/it/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,877 +94,1330 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "E' stato riscontrato un errore sconosciuto" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Eccezione nell'operazione di formattazione della stringa" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Non autorizzato." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Parametri inaccettabili." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "Era previsto un uuid ma è stato ricevuto %(uuid)s." -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "L'immagine %(image_id)s non è accettabile: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Impossibile trovare la risorsa." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Impossibile trovare l'immagine %(image_id)s." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "Connessione per l'host glance %(host)s:%(port)s non riuscita: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Non autorizzato per l'immagine %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "href immagine %(image_href)s non valido." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Impossibile trovare la configurazione in %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "Elenco istantanee rilevato ma nessuna intestazione è stata trovata!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "analisi di 'qemu-img info' non riuscita." + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s sottoposto a backup da: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Convertito in non elaborato, ma il formato ora è %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Backend non valido: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Ricaricamento file memorizzato nella cache %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "Impossibile rimuovere tmpdir: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "Impossibile scollegare %(path)s, errore: %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "Impossibile rimuovere la dir %(path)s, errore: %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "Impossibile creare symlink da %(source)s in %(link)s, errore: %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "Errore durante il tentativo di contattare il server glance '%(host)s:%(port)s' per '%(method)s', %(extra)s." -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool stdout: '%(out)s', stderr: '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." -msgstr "" +msgstr "Creazione PXE config per la distribuzione %s." -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" -msgstr "" - -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" -msgstr "" - -#: ironic/objects/base.py:145 -msgid "Invalid version string" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:200 -#, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:301 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Cannot load '%(attrname)s' in the base class" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/seamicro.py:488 #, python-format -msgid "An object of class %s is required here" +msgid "set_boot_device error: %s" msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "Original exception being dropped: %s" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:93 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/lockutils.py:105 -#, python-format -msgid "Could not release the acquired lock `%s`" +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/openstack/common/lockutils.py:170 -#, python-format -msgid "Got semaphore \"%(lock)s\"" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPU non impostate; è possibile che la raccolta CPU sia stata interrotta" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 non dispone di %(requested_disk)s MB di disco utilizzabile, disponde solo di %(usable_disk_mb)s MB di disco utilizzabile." + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 non dispone di %(requested_ram)s MB di ram utilizzabile, dispone solo di %(usable_ram)s MB di ram utilizzabile." + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "Eccezione originale in corso di eliminazione: %s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "Impossibile rilasciare il blocco acquisito `%s`" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" msgstr "" #: ironic/openstack/common/lockutils.py:179 @@ -1010,7 +1453,7 @@ #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Obsoleto: %s" #: ironic/openstack/common/log.py:402 #, python-format @@ -1020,21 +1463,21 @@ #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "La funzione syslog deve essere una tra le seguenti: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Chiamata errata alla configurazione obsoleta: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "La durata dell'attività eseguita ha superato l'intervallo di %s secondi" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "chiamata in loop a durata fissa" #: ironic/openstack/common/loopingcall.py:131 #, python-format @@ -1043,164 +1486,164 @@ #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "chiamata in loop dinamico" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "Argomento imprevisto per creazione attività periodica: %(arg)s." #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "Abbadono dell'attività periodica %(task)s perché l'intervalo è negativo" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "Abbadono dell'attività periodica %(task)s perché è disabilitata" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Esecuzione attività periodica %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Errore durante %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "Impossibile comprendere la regola %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "Nessun gestore per le corrispondenze di tipo %s" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "Impossibile comprendere la regola %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Gli argomenti parola chiave ricevuti sono sconosciuti per utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Esecuzione del comando (sottoprocesso): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Il risultato é %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r non riuscito. Nuovo tentativo." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Eseguendo cmd (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Ambiente non supportato in SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "input_processo non supportato in SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Impostazione completa di CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "Rilevato %s, esistente" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "Il processo principale è stato interrotto inaspettatamente, uscire" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Eccezione non gestita" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Sblocco troppo veloce, attendere" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Child avviato %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Avvio %d operatori" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "Child %(pid)d interrotto dal segnale %(sig)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "Child %(pid)s terminato con stato %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d non incluso nell'elenco child" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "Intercettato %s, arresto in corso dei children" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "In attesa %d degli elementi secondari per uscire" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "Impossibile trovare il file_cert : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "Impossibile trovare il file_ca: %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "Impossibile trovare il file_chiavi : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "Quando si esegue il server in modalità SSL, è necessario specificare sia un valore dell'opzione cert_file che key_file nel file di configurazione" #: ironic/openstack/common/sslutils.py:100 #, python-format @@ -1220,661 +1663,523 @@ #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Moltiplicatore byte sconosciuto: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Parametro non valido: Unicode non è supportato dal database corrente." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "la versione deve essere un numero intero" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "La chiave di ordinamento fornita non è valida." + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "Direzione ordinamento sconosciuta, deve essere 'desc' o 'asc'" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Valore read_deleted non riconosciuto '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "Specificar la colonna %s nel parametro col_name_col_instance. È richiesto perché la colonna ha un tipo non supportato da sqlite)." -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "Il parametro col_name_col_instance ha un tipo errato di istanza della colonna per la colonna %s. Deve essere l'istanza di sqlalchemy.Column." -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s non ha priorità valide" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problema '%(e)s' durante il tentativo di inviare al sistema di notifiche. Payload=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Impossibile caricare il programma di notifica %s. Queste notifiche non verranno inviate." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Impossibile inviare la notifica a %(topic)s. Payload=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" +msgstr "Pool che crea una nuova connessione" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "contesto decompresso: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID è %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "ricevuto %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "nessun metodo per il messaggio: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "nessun metodo per il messagggio: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Eccezione prevista durante la gestione del messaggio (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Eccezione durante la gestione del messaggio" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Esecuzione chiamata sincrona su %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID é %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Esecuzione cast asincrono su %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Rendere fanout cast asincrono..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Invio %(event_type)s a %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "Si è verificata un'eccezione relativa a RPC sconosciuta." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Errore remoto: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Trovato messaggio duplicato (%(msg_id)s). Viene ignorato." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Riutilizzo invalido di una connessione RPC." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "La versione RPC specificata, %(version)s, non è supportata da questo endpoint." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Versione della busta RPC specificata, %(version)s, non supportata da questo endpoint." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" +msgstr "Sollevando eccezione %s al chiamante" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Riconnessione al server AMQP su %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Connesso al server AMQP su %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Impossibile connettersi al server AMQP su %(hostname)s:%(port)d dopo %(max_retries)d tentativi: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "Il server AMQP in %(hostname)s:%(port)d non è raggiungibile: %(err_str)s. Riprovare tra %(sleep_time)d secondi." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Impossibile dichiarare il consumer per il topic '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Timeout in attesa della risposta RPC: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Impossibile utilizzare il messaggio dalla coda: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "Impossibile pubblicare il messaggio per il topic '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Impossibile elaborare il messaggio... viene ignorato." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "Impossibile connettersi al server AMQP: %(e)s. Attendere %(delay)s secondi" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Connesso al serve AMQP su %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Code AMQP ristabilite" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Errore durante l'elaborazione del messaggio. Viene ignorato." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "Serializzazione JSON non riuscita." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Deserializzazione: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Connessione a %(addr)s con %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Sottoscritto a %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> bind %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Impossibile aprire il socket." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "Sottoscrizione per %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "Impossibile ricevere su questo socket." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "Impossibile inviare a questo socket." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Esecuzione funzione con contesto: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Invio risposta" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "Il messaggio RPC non include il metodo." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Registrazione del reattore" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "Reactor interno registrato" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" +msgstr "Utilizzo socket" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Creazione del proxy per il topic: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "L'argomento conteneva caratteri pericolosi." -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "Creazione file socket topic non riuscita." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Buffer di backlog per-topic locale pieno per il topic %(topic)s. Eliminare il messaggio." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "Impossibile creare il daemon ricevente ZeroMQ. Il socket potrebbe già essere in uso." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "CONSUMER RECEIVED DATA: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "Versione envelope ZMQ non supportata o sconosciuta." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "La registrazione dell'argomento viene ignorata. È già registrata." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "Il consumer è un zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Creazione payload" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Creazione socket coda per il waiter di risposta" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Invio cast" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Cast inviato; In attesa di risposta" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Messaggio ricevuto: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Decompressione risposta" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Envelope ZMQ restituito non è supportato o è sconosciuto" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "Messaggio RPC non valido." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Invio messaggi a: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "Nessun risultato di matchmaker. Nessun casting." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "Nessuna corrispondenza per matchmaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Corrispondenza non trovata da MatchMaker." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "Matchmaker non implementa la registrazione o heartbeat." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Registrare prima di avviare heartbeat." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "Nessuna chiave che definisce l'host per topic '%s', consultare ringfile" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "Creazione connessione consumer per il servizio %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/it_IT/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/it_IT/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/it_IT/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/it_IT/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Italian (Italy) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/openstack/language/it_IT/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: it_IT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ja/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ja/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ja/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ja/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,90 @@ -# Japanese translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# Tomoyuki KATO , 2013 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Japanese " -"(http://www.transifex.com/projects/p/openstack/language/ja/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Japanese (http://www.transifex.com/projects/p/openstack/language/ja/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,877 +95,1330 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "不明な例外が発生しました。" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "ストリング・フォーマットの操作で例外が発生しました" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "許可されていません。" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "受け入れられないパラメーター。" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "UUID が必要ですが、%(uuid)s を受け取りました。" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "イメージ %(image_id)s は受け入れられません: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "リソースが見つかりませんでした。" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "イメージ %(image_id)s が見つかりませんでした。" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "Glance ホスト %(host)s:%(port)s との接続に失敗しました: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "イメージ %(image_id)s では許可されません。" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "無効なイメージ href %(image_href)s。" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "%(path)s で config が見つかりませんでした" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "スナップショット・リストが検出されましたが、ヘッダーが見つかりません。" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "'qemu-img info' の解析に失敗しました。" + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s の基盤: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "ローに変換されましたが、現在の形式は %s です" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "不正なバックエンドです: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "キャッシュ・ファイル %s を再ロードしています" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "tmpdir を削除できませんでした: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "%(path)s のリンク解除に失敗しました。エラー: %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "ディレクトリー %(path)s の削除に失敗しました。エラー: %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "%(source)s から %(link)s へのシンボリック・リンクの作成に失敗しました。エラー: %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "Glance サーバー '%(host)s:%(port)s' への接続中にエラーが発生しました。'%(method)s'、%(extra)s。" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "disabled" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" -msgstr "" +msgstr "コマンド: %s" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool stdout: '%(out)s'、stderr: '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." -msgstr "" +msgstr "デプロイメント %s 用に PXE 構成を作成しています。" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" -msgstr "" - -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" -msgstr "" - -#: ironic/objects/base.py:145 -msgid "Invalid version string" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:200 -#, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:301 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Cannot load '%(attrname)s' in the base class" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/seamicro.py:488 #, python-format -msgid "An object of class %s is required here" +msgid "set_boot_device error: %s" msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "Original exception being dropped: %s" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:93 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/lockutils.py:105 -#, python-format -msgid "Could not release the acquired lock `%s`" +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/openstack/common/lockutils.py:170 -#, python-format -msgid "Got semaphore \"%(lock)s\"" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "vCPU が設定されていません。CPU コレクションの失敗が想定されます" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 には %(requested_disk)s MB の使用可能なディスクがありません。使用可能なディスクは %(usable_disk_mb)s MB のみです。" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 には %(requested_ram)s MB の使用可能な RAM がありません。使用可能な RAM は %(usable_ram)s MB のみです。" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "除去される元の例外: %s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "予期せぬ例外が、%d回()発生しました。再試行中。" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "取得したロック `%s` を解放できませんでした" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" msgstr "" #: ironic/openstack/common/lockutils.py:179 @@ -1010,202 +1454,202 @@ #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "非推奨: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "ログ設定 %(log_config)s の読み込みエラー: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog 機能は次のいずれかでなければなりません: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "推奨されない構成への致命的な呼び出し: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "タスクの実行が間隔より %s 秒長くかかりました" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "一定期間の呼び出しループ" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "動的ループ呼び出しが %.02f 秒停止します" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "動的呼び出しループ" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "定期タスク作成時の予期しない引数: %(arg)s。" #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "タスクの間隔が負であるため、定期タスク %(task)s をスキップしています" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "タスクが使用不可であるため、定期タスク %(task)s をスキップしています" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "定期タスク %(full_task_name)s の実行中" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "%(full_task_name)s 中のエラー: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "ルール %(rule)s を解釈できませんでした" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "突き合わせの種類 %s に対応するハンドラーがありません" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "ルール %(rule)r を解釈できませんでした" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "utils.execute の不明なキーワード引数を受け取りました: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "コマンド実行(subprocess): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "コマンド実行結果: %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r が失敗しました。再試行しています。" #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "コマンド(SSH)を実行: %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "環境は SSH でサポートされていません" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "SSH で process_input は サポートされていません" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "CONF のフルセット:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "%s が見つかりました。終了しています" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "親プロセスが予期せずに停止しました。終了しています" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "未処理例外" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "fork が早すぎます。スリープ状態にしています" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "子 %d を開始しました" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "%d ワーカーを開始しています" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "子 %(pid)d がシグナル %(sig)d によって強制終了されました" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "子 %(pid)s が状況 %(code)d で終了しました" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d は子リストにありません" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "%s が見つかりました。子を停止しています" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "%d 個の子で終了を待機しています" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "cert_file が見つかりません: %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "ca_file が見つかりません: %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "key_file が見つかりません: %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "サーバーを SSL モードで実行する場合は、cert_file オプション値と key_file オプション値の両方を構成ファイルに指定する必要があります" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "無効な SSL バージョン : %s" #: ironic/openstack/common/strutils.py:88 #, python-format @@ -1220,661 +1664,523 @@ #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "不明なバイト乗数: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "無効なパラメーター: ユニコードは現在のデータベースではサポートされていません。" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "バージョンは整数でなければなりません" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "指定されたソート・キーが無効でした。" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "ソート方向が不明です。'desc' または 'asc' でなければなりません" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "認識されない read_deleted 値 '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "col_name_col_instance パラメーターに列 %s を指定してください。これは、列に、sqlite) によってサポートされないタイプがあるために必要です。" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "col_name_col_instance パラメーターに、列 %s では正しくないタイプの列インスタンスがあります。これは sqlalchemy.Column のインスタンスでなければなりません。" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s の優先順位が無効です" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "通知システムへの送信を試行中に問題 '%(e)s' が発生しました。Payload=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "通知機能 %s のロードに失敗しました。これらの通知は送信されません。" #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "%(topic)s に通知を送信できませんでした。Payload=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" +msgstr "プールで新規接続を作成しています" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." -msgstr "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "呼び出し待ちの数が警告閾値 %d を超えました。 MulticallProxyWaiter のリークの可能性があります。" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "context %s をアンパックしました。" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID は %s です。" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "受信: %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "メッセージ %s に対するメソッドが存在しません。" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "メッセージ %s に対するメソッドが存在しません。" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "メッセージ処理中の予期された例外 (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "メッセージ処理中の例外" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "%s で同期呼び出しを実行中..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_IDは %s です。" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "%s で非同期キャストを実行中..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "非同期ファンアウト・キャストを実行中..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "%(topic)s で %(event_type)s を送信中" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "RPC 関連の不明な例外が発生しました。" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "リモート・エラー: %(exc_type)s %(value)s\n%(traceback)s。" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "RPC 応答を待っている間にタイムアウトが発生しました - topic: \"%(topic)s\", RPC method: \"%(method)s\" info: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "重複メッセージ (%(msg_id)s) を検出しました。スキップします。" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "RPC 接続の無効な再利用です。" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "このエンドポイントでサポートされていない RPC バージョン %(version)s が指定されました。" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "このエンドポイントでサポートされていない RPC エンベロープ・バージョン %(version)s が指定されました。" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "指定された RPC バージョンの上限 %(version_cap)s が低すぎます" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" +msgstr "呼び出し元に 例外 %s を返却します。" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "%(hostname)s:%(port)d 上の AMQP サーバーに再接続しています" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "%(hostname)s:%(port)d 上の AMQP サーバーに接続しました" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "%(max_retries)d 回の試行の後、%(hostname)s:%(port)d 上の AMQP サーバーに接続できません: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "%(hostname)s:%(port)d 上の AMQP サーバーは到達不能です: %(err_str)s。%(sleep_time)d 秒後に再試行します。" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "トピック '%(topic)s' のコンシューマーを宣言できませんでした: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "RPC 応答の待機中にタイムアウトになりました: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "キューからのメッセージのコンシュームに失敗しました: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "トピック '%(topic)s' に対してメッセージをパブリッシュできませんでした: %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "メッセージの処理に失敗しました... スキップしています。" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "AMQP サーバーに接続できません: %(e)s。%(delay)s 秒間スリープ状態になります" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "%s 上の AMQP サーバーに接続しました" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "AMQP キューを再確立しました" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "メッセージの処理中にエラーが発生しました。スキップしています。" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON の直列化が失敗しました。" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "非直列化しています: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "%(type)s の %(addr)s に接続しています" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> %(subscribe)s にサブスクライブしました" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> バインド: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "ソケットを開くことができませんでした。" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "%s にサブスクライブしています" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "このソケットでは受信できません。" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "このソケットでは送信できません。" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "コンテキスト %s を含む関数を実行しています" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "応答を送信しています" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC メッセージにメソッドが含まれていませんでした。" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "リアクターの登録中" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" +msgstr "入力リアクターが登録されました" -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" +msgstr "ソケットの消費中" -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "トピック用プロキシーの作成中: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "トピックに危険な文字が含まれていました。" -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "トピック・ソケット・ファイルの作成に失敗しました。" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "トピック %(topic)s のトピック単位のローカル・バックログ・バッファーがフルです。メッセージを除去しています。" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "必要な IPC ディレクトリが %s に存在しません" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "IPC ディレクトリ %s へのアクセス許可がありません" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "ZeroMQ 受信側デーモンを作成できませんでした。ソケットが既に使用中である可能性があります。" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "コンシューマーがデータを受信しました: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ エンベロープのバージョンがサポートされていないか、または不明です。" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "トピックの登録をスキップします。既に登録されています。" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "コンシューマーは zmq.%s です" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "ペイロードを作成しています" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "応答ウェイターのキュー・ソケットの作成中" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "キャストの送信中" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "キャストが送信されました。応答を待機中です" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "メッセージを受信しました: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "応答をアンパックしています" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "サポートされていないか、または不明な ZMQ エンベロープが返されました。" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC メッセージが無効です。" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "メッセージを %s に送信中" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "Matchmaker の結果がありません。キャストは行いません。" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "MatchMaker からの一致がありません。" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s は非推奨です。代わりに %(new)s を使用してください。" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "MatchMaker による一致が見つかりません。" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "MatchMaker が登録またはハートビートを実施していません。" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "matchmaker が登録されていません: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "ハートビートを開始する前に登録してください。" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "トピック '%s' のホストを定義するキーがありません。リング・ファイルを参照してください" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "サービス %s のコンシューマー接続を作成しています" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ka_GE/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ka_GE/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ka_GE/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ka_GE/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Georgian (Georgia) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/openstack/language/ka_GE/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ka_GE\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "არ არის ავტორიზებული." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." -msgstr "" - -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/km/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/km/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/km/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/km/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Khmer translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-15 02:27+0000\n" -"Last-Translator: Tom Fifield \n" -"Language-Team: Khmer " -"(http://www.transifex.com/projects/p/openstack/language/km/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/openstack/language/km/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/kn/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/kn/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/kn/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/kn/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Kannada translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Kannada " -"(http://www.transifex.com/projects/p/openstack/language/kn/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Kannada (http://www.transifex.com/projects/p/openstack/language/kn/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: kn\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ko_KR/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ko_KR/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ko_KR/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ko_KR/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,91 @@ -# Korean (South Korea) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# ujuc Gang , 2014 +# ujuc Gang , 2014 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Korean (Korea) " -"(http://www.transifex.com/projects/p/openstack/language/ko_KR/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Korean (Korea) (http://www.transifex.com/projects/p/openstack/language/ko_KR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ko_KR\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" -msgstr "" +msgstr "메소드가 지정되지 않았습니다." -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." -msgstr "" - -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" +msgstr "Chassis ID가 지정되지 않았습니다." -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." -msgstr "" +msgstr "노드 ID가 지정되지 않았습니다." -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" -msgstr "" +msgstr "제한 값은 양수여야 합니다." -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,878 +96,1331 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" -msgstr "" +msgstr "http://%(host)s:%(port)s 에서 서비스중" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" -msgstr "" +msgstr "구성:" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "알 수 없는 예외가 발생했습니다. " -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "문자열 형식화 오퍼레이션의 예외" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "권한이 없습니다. " -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "허용할 수 없는 매개변수입니다. " -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "uuid를 예상했지만 %(uuid)s을(를) 수신했습니다. " -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "%(image_id)s 이미지는 허용할 수 없음: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "자원을 찾을 수 없습니다. " -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "%(image_id)s 이미지를 찾을 수 없습니다. " -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "글랜스 호스트 %(host)s:%(port)s에 대한 연결 실패: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "%(image_id)s 이미지에 대한 권한이 없습니다. " -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "올바르지 않은 이미지 href %(image_href)s." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "%(path)s에서 구성을 찾을 수 없음" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "스냅샷 목록이 있지만 헤더를 찾을 수 없습니다!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "'qemu-img info' 구문 분석에 실패했습니다. " + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s 백업: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "원시로 변환되었지만 형식은 지금 %s임" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "올바르지 않은 백엔드: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "캐시된 파일 %s 다시 로드 중" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "tmpdir을 제거할 수 없음: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "%(path)s 링크 해제 실패, 오류: %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "%(path)s 제거 실패, 오류: %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "%(source)s에서 %(link)s(으)로의 symlink 작성 실패, 오류: %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "'%(method)s'에 대한 글랜스 서버 '%(host)s:%(port)s'에 접속 중 오류 발생: %(extra)s." -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." -msgstr "" +#: ironic/conductor/manager.py:330 +msgid "provisioning" +msgstr "provisioning" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" -msgstr "" +msgstr "지원하지 않습니다." -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "disabled" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" -msgstr "" +msgstr "명령어: %s" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" -msgstr "" +msgstr "StdOut: %r" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" -msgstr "" +msgstr "StdErr: %r" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 #, python-format -msgid "IPMI power on failed for node %s." +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool stdout: '%(out)s', stderr: '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "배치 %s에 대한 PXE 구성을 빌드 중입니다. " + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" -msgstr "" - -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:200 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:301 -#, python-format -msgid "Cannot load '%(attrname)s' in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "An object of class %s is required here" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Original exception being dropped: %s" +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/excutils.py:93 +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPU 설정되지 않음: CPU 콜렉션 중단 가정" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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에 %(requested_disk)sMB의 가용 디스크가 없습니다. %(usable_disk_mb)sMB의 가용 디스크만 있습니다." + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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에 %(requested_ram)sMB의 RAM이 없습니다. %(usable_ram)sMB의 가용 RAM만 있습니다." + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "기존 예외가 삭제됨: %s" + +#: ironic/openstack/common/excutils.py:93 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "예기치 않은 예외 %d 번 발생하였습니다... 다시 시도중." + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" -msgstr "" +msgstr "획득한 `%s` 잠금을 해제할 수 없음" #: ironic/openstack/common/lockutils.py:170 #, python-format msgid "Got semaphore \"%(lock)s\"" -msgstr "" +msgstr "세마포어 \"%(lock)s\" 받음." #: ironic/openstack/common/lockutils.py:179 #, python-format @@ -1010,202 +1455,202 @@ #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "더 이상 사용되지 않음: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "%(log_config)s 설정 기록을 불러오는 중 오류가 발생했습니다: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog 기능이 다음 중 하나여야 함: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "더 이상 사용되지 않는 구성에 대한 심각한 호출: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "태스크 실행이 %s초의 간격을 지속함" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "고정 기간 루프 호출에서" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "%.02f 초 동안 대기할 동적 순환 반복 호출" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "동적 루프 호출에서" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "주기적 태스크 작성에 대한 예기치 않은 인수: %(arg)s." #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "간격이 음수이기 때문에 주기적 태스크 %(task)s을(를) 건너뜀" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "사용 안하기 때문에 주기적 태스크 %(task)s을(를) 건너뜀" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "주기적 태스크 %(full_task_name)s 실행 중" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "%(full_task_name)s 중 오류: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "%(rule)s 규칙을 이해하지 못했음" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "%s 유형의 일치에 대한 핸들러가 없음" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "%(rule)r 규칙을 이해하지 못했음" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "utils.execute에 대해 알 수 없는 키워드 인수를 가져옴: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "cmd(하위 프로세스) 실행 중: %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "결과는 %s입니다." #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r 실패. 재시도 중입니다. " #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "cmd(SSH) 실행 중: %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "환경이 SSH를 통해 지원되지 않음" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input이 SSH를 통해 지원되지 않음" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "CONF의 전체 세트:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "%s 발견, 종료 중" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "상위 프로세스가 예기치 않게 정지했습니다. 종료 중" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "처리되지 않은 예외" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "포크가 너무 빠름. 정지 중" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "%d 하위를 시작했음" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "%d 작업자 시작 중" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "%(pid)d 하위가 %(sig)d 신호에 의해 강제 종료됨" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "%(pid)s 하위가 %(code)d 상태와 함께 종료했음" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d이(가) 하위 목록에 없음" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "%s 발견, 하위 중지 중" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "%d 하위에서 종료하기를 대기 중임" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "cert_file을 찾을 수 없습니다. : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "ca_file을 찾을 수 없습니다. : %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "key_file을 찾을 수 없습니다. : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "SSL 모드로 서버를 실행하는 경우 구성 파일에서 cert_file 및 key_file 옵션 값 둘 다를 지정해야 합니다. " #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "잘못된 SSL 버전 : %s" #: ironic/openstack/common/strutils.py:88 #, python-format @@ -1220,661 +1665,523 @@ #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "알 수 없는 바이트 승수: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "올바르지 않은 매개변수: Unicode는 현재 데이터베이스에서 지원되지 않습니다. " -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "버전은 정수여야 함" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "제공되는 정렬 키가 올바르지 않습니다. " + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "알 수 없는 정렬 방향입니다. 'desc' 또는 'asc'여야 함" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "인식되지 않는 read_deleted 값 '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "col_name_col_instance 매개변수에 %s 열을 지정하십시오. sqlite에서 지원하지 않는 유형이 열에 있으므로 이는 필수입니다." -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "%s 열에 올바르지 않은 열 인스턴스 유형이 col_name_col_instance 매개변수에 있습니다. sqlalchemy.Column의 인스턴스여야 합니다." -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s이(가) 유효한 우선순위에 없음" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "알림 시스템에 보내려고 시도하는 중 '%(e)s' 문제점이 발생했습니다. 페이로드=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "%s 알리미를 로드하지 못했습니다. 이들 알림은 발송되지 않습니다. " #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "%(topic)s(으)로 알림을 발송할 수 없습니다. 페이로드=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "풀이 새 연결을 작성 중임" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." -msgstr "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "호출 대기 수가 스레드에서 경고한 %d보다 더 많습니다. MulticallProxyWaiter에서 누수가 있을 수 있습니다." -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "압축이 풀리지 않은 컨텍스트: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID는 %s입니다." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "%s 수신" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "메시지에 대한 메소드가 없음: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "메시지에 대한 메소드가 없음: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "메시지 처리 중에 예상된 예외(%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "메시지 처리 중 예외" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "%s에서 동기 호출 작성 중..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID는 %s입니다. " -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "%s에서 비동기 캐스트 작성 중..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "비동기 팬아웃 캐스트 작성 중..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "%(topic)s에서 %(event_type)s 보내는 중" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "알 수 없는 RPC 관련 예외가 발생했습니다. " -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "원격 오류: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "RPC 응답 대기 시간을 초과 했습니다 - 토픽: \"%(topic)s\", RPC 방식: \"%(method)s\" 정보: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "중복 메시지(%(msg_id)s)를 찾았습니다. 이를 건너뜁니다. " -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "RPC 연결의 올바르지 않은 재사용입니다. " -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "지정된 RPC 버전 %(version)s이(가) 이 엔드포인트에서 지원되지 않습니다. " -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "지정된 RPC 엔벨로프 버전 %(version)s이(가) 이 엔드포인트에서 지원되지 않습니다. " -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "지정된 RPC 버전 캡 %(version_cap)s 이 너무 낮습니다." -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "%s 예외를 호출자에게 리턴 중" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "메시지 처리 실패 ... 건너뜁니다." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "메시지 처리 실패 ... 큐에 다시 넣습니다." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "%(hostname)s:%(port)d에서 AMQP 서버에 다시 연결 중" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "%(hostname)s:%(port)d에서 AMQP 서버에 연결되었음" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "%(max_retries)d번 시도 후에 %(hostname)s:%(port)d에서 AMQP 서버를 연결할 수 없음: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "%(hostname)s:%(port)d의 AMQP 서버에 접근할 수 없음: %(err_str)s. %(sleep_time)d초 내에 다시 시도하십시오. " -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "'%(topic)s' 주제에 대한 이용자를 선언하지 못했음: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "RPC 응답 대기 중에 제한시간 초과: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "큐의 메시지를 이용하지 못했음: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "'%(topic)s' 주제에 메시지를 공개하지 못했음: %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "메시지를 처리하지 못했습니다. 건너뛰는 중입니다. " + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "AMQP 서버 %(e)s에 연결할 수 없습니다. %(delay)s 초 휴면 상태입니다. " -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "%s의 AMQP 서버에 연결했음" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "AMQP 큐 재설정" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "메시지 처리 오류입니다. 건너뛰는 중입니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON 직렬화에 실패했습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "직렬화 취소 중: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "%(type)s을(를) 갖는 %(addr)s에 연결 중" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> %(subscribe)s에 등록" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> 바인드: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "소켓을 열 수 없습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "%s에 등록" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "이 소켓에서 수신할 수 없습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "이 소켓에서 전송할 수 없습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "다음 컨텍스트를 갖고 기능 실행 중: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "응답 보내는 중" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC 메시지에 메소드가 없습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "리액터 등록 중" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" +msgstr "인 리액터 등록" -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" +msgstr "소켓 이용 중" -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "주제에 대한 프록시 작성: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "올바르지 않은 문자가 있는 주제. " -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "주제 소켓 파일 작성에 실패했습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "%(topic)s 주제에 대한 로컬 주제별 백로그 버퍼가 가득 찼습니다. 메시지 삭제 중입니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "%s 에서 필요한 IPC 디렉터리가 없습니다" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "%s에서 IPC 디렉터리에 대한 권한을 거부했습니다" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "ZeroMQ 수신기 디먼을 작성할 수 없습니다. 소켓이 이미 사용 중일 수 있습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "CONSUMER RECEIVED DATA: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ Envelope 버전을 지원하지 않거나 알 수 없습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "주제 등록을 건너뜁니다. 이미 등록되었습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "이용자: zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "페이로드 작성 중" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "응답 대기자를 위한 큐 소켓 작성 중" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "캐스트 보내는 중" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "캐스트 전송. 응답 대기 중" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "수신된 메시지: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "응답 압축 해제 중" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "지원되지 않거나 알 수 없는 ZMQ 엔벨로프가 리턴되었습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC 메시지가 올바르지 않습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "메시지를 전송 중인 대상: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "중개인 결과가 없습니다. 캐스트하지 않습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "중개자와 일치하지 않습니다. " -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s 를 사용하지 않습니다; %(new)s 를 사용하도록 하십시오." -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "중개자가 일치를 찾지 못했습니다. " -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "중개자가 등록이나 하트비트를 구현하지 않습니다." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "등록되지 않은 중개자: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "하트비트를 시작하기 전에 등록하십시오. " -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "'%s' 주제에 대한 키 정의 호스트가 없습니다. 링 파일 참조" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "%s 서비스에 대한 이용자 연결 작성" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ml_IN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ml_IN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ml_IN/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ml_IN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Malayalam (India) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-17 02:17+0000\n" -"Last-Translator: Tom Fifield \n" -"Language-Team: Malayalam (India) " -"(http://www.transifex.com/projects/p/openstack/language/ml_IN/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Malayalam (India) (http://www.transifex.com/projects/p/openstack/language/ml_IN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ml_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/mr_IN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/mr_IN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/mr_IN/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/mr_IN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Marathi (India) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Marathi (India) (http://www.transifex.com/projects/p/openstack/language/mr_IN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: mr_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ms/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ms/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ms/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ms/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Malay translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Malay (http://www.transifex.com/projects/p/openstack/language/ms/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/nb/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/nb/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/nb/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/nb/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Norwegian Bokmål translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Norwegian Bokmål " -"(http://www.transifex.com/projects/p/openstack/language/nb/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/openstack/language/nb/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "En ukjent feil oppsto." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Ikke autorisert." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Ressurs ble ikke funnet." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." -msgstr "" - -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1099,12 +1542,12 @@ #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Resultat var %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r feilet. Prøver på nytt." #: ironic/openstack/common/processutils.py:219 #, python-format @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ne/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ne/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ne/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ne/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Nepali translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Nepali " -"(http://www.transifex.com/projects/p/openstack/language/ne/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Language-Team: Nepali (http://www.transifex.com/projects/p/openstack/language/ne/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ne\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/nl_NL/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/nl_NL/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/nl_NL/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/nl_NL/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Dutch (Netherlands) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/openstack/language/nl_NL/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Node %s can't be deleted because it's not powered off" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:763 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "gedeactiveerd" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/pa_IN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/pa_IN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/pa_IN/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/pa_IN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Punjabi (Gurmukhi, India) translations for ironic. +# Translations template for ironic. # Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2014-01-02 13:42+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Panjabi (Punjabi) (India) (http://www.transifex.com/projects/p/openstack/language/pa_IN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: pa_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:798 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,520 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/pl_PL/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/pl_PL/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/pl_PL/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/pl_PL/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,927 +1,1360 @@ -# Polish (Poland) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# Łukasz Jernaś , 2014 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/openstack/language/pl_PL/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" -msgstr "" +msgstr "Nie podano metody" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." -msgstr "" +msgstr "Nie podano ID obudowy" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." -msgstr "" +msgstr "Nie podano ID węzła" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" -msgstr "" +msgstr "Błędny typ. Spodziewano się „%(type)s”, otrzymano „%(value)s”" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" -msgstr "" +msgstr "Ograniczenie musi być liczbą dodatnią" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" +msgstr "Błędny kierunek sortowania: %s. Przyjmowanymi wartościami są „asc” lub „desc”" + +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" msgstr "" #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" -msgstr "" +msgstr "ErrorDocumentMiddleware otrzymało błędny status %s" #: ironic/api/middleware/parsable_error.py:80 #, python-format msgid "Error parsing HTTP response: %s" -msgstr "" +msgstr "Błąd podczas przetwarzania odpowiedzi HTTP: %s" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" -msgstr "" +msgstr "Konfiguracja:" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Wystąpił nieznany wyjątek." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Nie upoważniono." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." -msgstr "" +msgstr "Operacja niedozwolona." -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 -msgid "Invalid resource state." +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:122 +msgid "Invalid resource state." +msgstr "Nieprawidłowy stan zasobu." + +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "Spodziewano się UUID, jednakże otrzymano %(uuid)s." -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." -msgstr "" +msgstr "Spodziewano się UUID lub liczby całkowitej, otrzymano %(identity)s." -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." -msgstr "" +msgstr "Spodziewano się adres MAC, otrzymano %(mac)s." -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 #, python-format -msgid "Failed to deploy instance: %(reason)s" +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:150 +#, python-format +msgid "Failed to deploy instance: %(reason)s" +msgstr "Nie można utworzyć instancji: %(reason)s" + +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "Obraz %(image_id)s jest niedozwolony: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Nie znaleziono zasobu." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." -msgstr "" +msgstr "Nie można załadować sterownika %(driver_name)s." -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "wyłączone" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1378,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1401,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1100,7 +1543,7 @@ #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Wynik był %s" #: ironic/openstack/common/processutils.py:179 #, python-format @@ -1120,64 +1563,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1666,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1757,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Nie można otworzyć gniazda." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "Subskrybowanie do %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "Nie można wysłać do tego gniazda." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Otrzymano wiadomość: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Wysyłanie wiadomości do: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/pt/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/pt/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/pt/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/pt/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Portuguese translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/openstack/language/pt/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Ocorreu uma exceção desconhecida." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Não autorizado." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Parâmetros inceitáveis." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Não foi possível encontrar o recurso." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Não autorizado para a imagem %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "A recarregar o ficheiro em cache %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." -msgstr "" - -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1010,7 +1453,7 @@ #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Pedido: %s" #: ironic/openstack/common/log.py:402 #, python-format @@ -1020,12 +1463,12 @@ #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "A função registo do sistema deve ser uma de %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Chamada fatal para a config. pedida: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format @@ -1034,7 +1477,7 @@ #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "na chamada de repetição da duração fixada" #: ironic/openstack/common/loopingcall.py:131 #, python-format @@ -1043,7 +1486,7 @@ #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "na chamada de repetição dinâmica" #: ironic/openstack/common/periodic_task.py:43 #, python-format @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1184,28 +1627,28 @@ #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "Não é possível encontrar cert_file : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "Não é possível encontrar ca_file : %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "Não é possível encontrar key_file : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "Quando executar o servidor no modo SSL, deverá especificar o valor da opção de ambos os ficheiros cert_file e key_file no seu ficheiro de configuração" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "Versão SSL inválida: %s" #: ironic/openstack/common/strutils.py:88 #, python-format @@ -1220,661 +1663,523 @@ #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Multiplicador de byte desconhecido: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Parâmetro Inválido: o Unicode não é suportado pela base de dados atual." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" -msgstr "" +msgstr "Id. do tipo de colunas não suportada" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s não nas prioridades válidas" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problema '%(e)s' ao tentar enviar para a notificação do sistema. Carga=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Falha para carregar o notificador %s. Estas notificações não serão enviadas." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Não foi possível enviar a notificação para %(topic)s. Carga=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "contexto descompactado: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "A UNIQUE_ID é %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "recebido %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "nenhum método para a mensagem: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "nenhum método para a mensagem: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "A MSG_ID é %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Erro Remoto: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Tempo expirado enquanto aguardava a resposta RPC - tópico: \"%(topic)s\", método RPC: \"%(method)s\" informação: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Encontrada mensagem duplicada (%(msg_id)s). A ignorá-la." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "Exceção %s devolvida para o chamador" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Não foi possível processar a mensagem ... a ignorá-la." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Não foi possível processar a mensagem ... será recolocada na fila." + +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "A religar ao servidor AMQP %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Ligado ao servidor AMQP em %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Não é possível ligar ao servidor AMQP em %(hostname)s:%(port)d after %(max_retries)d tentativas: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "Valor inválido para qpid_topology_version: %d" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Falha ao processar a mensagem ... a ignorá-la." + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Ligado ao servidor AMQP em %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Restabelecidas as filas AMQP" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Erro ao processar a mensagem. A ignorá-la.." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "A seriação JSON falhou." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Anulação da seriação: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "A ligar a %(addr)s com %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Subscrito para %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> limitar: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Não foi possível abrir o socket." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "A subscrever para %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "Não pode receber neste socket." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "Não pode enviar neste socket." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "A executar a função com contexto: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "A enviar resposta" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "A mensagem RPC não incluiu o método." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "A registar reator" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" +msgstr "Registado no reator" -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "O tópico contém carateres perigosos." -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "A diretoria IPC necessária não existe em %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Permissão negada para a diretoria IPC em %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "Versão ENVELOPE ZMQ não suportada ou desconhecida." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "A ignorar o registo do tópico. Já registado." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "A criar carga" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Mensagem recebida: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "A descompactar resposta" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Envelope ZMQ devolvido não suportado ou desconhecido." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "Mensagem RPC Inválida." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "A enviar mensagem(ns) para: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/pt_BR/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/pt_BR/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/pt_BR/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/pt_BR/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,94 @@ -# Portuguese (Brazil) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# aflalves , 2014 +# aflalves , 2014 +# Gabriel Wainer, 2013 +# Gabriel Wainer, 2013 +# lucasagomes , 2014 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Portuguese (Brazil) " -"(http://www.transifex.com/projects/p/openstack/language/pt_BR/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/openstack/language/pt_BR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" -msgstr "" +msgstr "Método não especificado" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." -msgstr "" - -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" +msgstr "ID de chassi não especificado." -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." -msgstr "" +msgstr "ID de nodo não especificado" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" -msgstr "" +msgstr "Limite deve ser positivo" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,848 +99,1291 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" -msgstr "" +msgstr "Configuração:" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Ocorreu uma exceção desconhecida." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Exceção na operação de formato de sequência" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Não autorizado." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." -msgstr "" +msgstr "Operação não permitida." -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Parâmetros inaceitáveis." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "Esperado um UUID mas recebido %(uuid)s." -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "A imagem %(image_id)s é inaceitável: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Recursos não pôde ser encontrado." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." -msgstr "" +msgstr "Falha ao carregar o driver %(driver_name)s." -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Imagem %(image_id)s não pôde ser encontrada." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." -msgstr "" +msgid "Instance %(instance)s could not be found." +msgstr "instância %(instance)s não pôde ser encontrada." -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." -msgstr "" +msgid "Node %(node)s could not be found." +msgstr "Nó %(node)s não pôde ser encontrado." -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." -msgstr "" +msgstr "Porta %(port)s não pôde ser encontrada." -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 #, python-format -msgid "Chassis %(chassis)s could not be found." +msgid "Update MAC address on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "Chassis %(chassis)s não pode ser encontrado." + +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." -msgstr "" +msgstr "Conductor %(conductor)s não pode ser encontrado." -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." -msgstr "" +msgstr "Conductor %(conductor)s já registrado." -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "Conexão ao host de visão rápida %(host)s:%(port)s com falha: %(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Não autorizado para a imagem %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Imagem inválida href %(image_href)s." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" -msgstr "" +msgstr "Conexão falhou" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Não foi possível localizar a configuração em %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "Lista de capturas instantâneas encontradas, mas nenhum cabeçalho localizado!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "Falha na análise de 'qemu-img info'." + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s retornado por: %(backing_file)s" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Convertido em bruto, mas o formato é agora %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" -msgstr "" +msgstr "Conexão SSH falhou: %s" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Backend inválido: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "Recarregando arquivo em cache %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "Não foi possível remover tmpdir: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "Falha ao desvincular %(path)s, erro: %(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "Falha ao remover dir %(path)s, erro: %(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "Falha ao criar symlink de %(source)s para %(link)s, erro: %(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "Erro ao entrar em contato com o servidor de visão rápida '%(host)s:%(port)s' para '%(method)s', %(extra)s." -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" -msgstr "" +msgstr "Notificação recebida: %r" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "Desabilitado" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" -msgstr "" +msgstr "Comando: %s" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" -msgstr "" +msgstr "StdOut: %r" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" -msgstr "" +msgstr "StdErr: %r" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 #, python-format -msgid "IPMI power on failed for node %s." +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool stdout: '%(out)s', stderr: '%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." +msgstr "'%s' não é um valor inteiro." + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "Construindo configuração PXE para implementação %s." + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "SSH key file %s not found." +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 -#, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:225 -#, python-format -msgid "Retrieved Node List: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Found Mac address: %s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Error setting %(attr)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:200 -#, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/base.py:301 -#, python-format -msgid "Cannot load '%(attrname)s' in the base class" +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "Endereço Mac encontrado: %s" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPUs não configurado; supondo coleta da CPU quebrada" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 não possui %(requested_disk)s MB de disco utilizável, ele possui apenas %(usable_disk_mb)s MB de disco utilizável." + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 não possui %(requested_ram)s MB de ram utilizável, ele possui apenas %(usable_ram)s MB de ram utilizável." + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." msgstr "" #: ironic/objects/utils.py:39 @@ -960,921 +1398,793 @@ #: ironic/openstack/common/excutils.py:64 #, python-format msgid "Original exception being dropped: %s" -msgstr "" +msgstr "Exceção original sendo descartada: %s" #: ironic/openstack/common/excutils.py:93 #, python-format msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "Exceção não esperada ocorreu %d vez(es)... tentando novamente." + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" -msgstr "" +msgstr "Não foi possível liberar o bloqueio adquirido `%s`" #: ironic/openstack/common/lockutils.py:170 #, python-format msgid "Got semaphore \"%(lock)s\"" -msgstr "" +msgstr "Recebeu semáforo \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:179 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" -msgstr "" +msgstr "Tentando capturar lock de arquivo \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:189 #, python-format msgid "Created lock path: %s" -msgstr "" +msgstr "Criado caminho de lock: %s" #: ironic/openstack/common/lockutils.py:207 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Obteve lock do arquivo \"%(lock)s\" em %(path)s" #: ironic/openstack/common/lockutils.py:211 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "Liberado lock de arquivo \"%(lock)s\" em %(path)s" #: ironic/openstack/common/lockutils.py:249 #, python-format msgid "Got semaphore / lock \"%(function)s\"" -msgstr "" +msgstr "Recebeu semáforo / lock \"%(function)s\"" #: ironic/openstack/common/lockutils.py:253 #, python-format msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" +msgstr "Liberado semáforo / lock \"%(function)s\"" #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "Deprecado: %s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "Erro carregando configuração de logging %(log_config)s: %(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "o recurso syslog deve ser um dos seguintes: %s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "Chamada fatal para configuração descontinuada: %(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "a execução da tarefa durou %s segundos mais que o intervalo" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "em uma chamada de laço de duração fixa" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "Chamada de laço dinâmico dormindo por %.02f segundos" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "em chamada de laço dinâmico" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "Argumento inesperado para criação de tarefa periódica: %(arg)s." #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "Ignorando tarefa periódica %(task)s porque seu intervalo é negativo" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "Ignorando tarefa periódica %(task)s porque ela está desativada" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Executando tarefa periódica %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Erro durante %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "Falha ao entender a regra %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "Nenhum manipulador para correspondências do tipo %s" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "Falha ao entender a regra %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Obteve args de palavra-chave desconhecidos para utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Executando comando (subprocesso): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Resultado foi %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r falhou. Tentando novamente." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Executando o comando (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Ambiente não suportado sobre SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input não suportado sobre SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "Conjunto completo de CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "%s capturadas, saindo" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." -msgstr "" +msgstr "Exceção durante limpeza de RPC." -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "Processo pai saiu inesperadamente, saindo" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Exceção não tratada" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "Bifurcação muito rápida, suspendendo" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "Filho %d iniciado" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "Iniciando %d trabalhadores" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "%(pid)d filho eliminado pelo sinal %(sig)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "Filho %(pid)s encerrando com status %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d fora da lista de filhos" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "%s capturado, parando filhos" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "Aguardando em %d filhos para sair" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "Não é possível localizar cert_file : %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "Não é possível localizar ca_file : %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "Não é possível localizar key_file : %s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "Ao executar o servidor no modo SSL, você deve especificar um valor de opção cert_file e key_file no seu arquivo de configuração" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "versão SSL inválida: %s" #: ironic/openstack/common/strutils.py:88 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" +msgstr "Valor desconhecido '%(val)s', valores aceitáveis são: %(acceptable)s" #: ironic/openstack/common/strutils.py:184 #, python-format msgid "Invalid string format: %s" -msgstr "" +msgstr "formato de string inválido: %s" #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "Multiplicador de bytes desconhecido: %s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Parâmetro Inválido: Unicode não é suportado pelo banco de dados atual." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "a versão deve ser um número inteiro" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "A chave de classificação fornecida não era válida." + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "Direção de classificação desconhecida; deve ser 'desc' ou 'asc'" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Valor read_deleted não reconhecido '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "Especifique a coluna %s no parâmetro 'col_name_col_instance. Isso é necessário porque a coluna possui um tipo não suportado por sqlite)." -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "O parâmetro col_name_col_instance possui um tipo errado de instância da coluna para a coluna %s. Deveria ser uma instância de sqlalchemy.Column." -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" -msgstr "" +msgstr "Tipo de colunas ID não suportado" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s não em prioridades válidas" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problema '%(e)s' ao tentar enviar um sistema de notificação. Carga útil=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "Falha ao carregar notificador %s. Essas notificações não serão enviadas." #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "Não foi possível enviar notificação para %(topic)s. Carga útil=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "Conjunto criando nova conexão" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -msgstr "" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "Nenhuma thread chamada esperando por msg_id : %(msg_id)s, mensagem : %(data)s" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "conteúdo descompactado: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID é %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "recebido %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "sem método para mensagem: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Sem método para mensagem: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "Exceção esperada durante a manipulação de mensagem (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "Exceção durante a manipulação de mensagem" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "Fazendo chamada síncrona em %s ..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID é %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "Fazendo conversão assíncrona em %s..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "Fazendo conversão de fanout assíncrono..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "Enviando %(event_type)s em %(topic)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "Um RPC desconhecido relatou exceção ocorrida." -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Erro remoto: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "Tempo esgotado aguardando resposta RPC - tópico: \"%(topic)s\", método RPC: \"%(method)s\" info: \"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "Encontrada mensagem duplicada (%(msg_id)s). Ignorando-a." -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Reutilização inválida de uma conexão RPC." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "Versão de RPC especificada, %(version)s, não suportada por este terminal." -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "Versão de envelope de RPC especificada, %(version)s, não suportada por esse terminal." -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" +msgstr "Versão de CAP de RPC, %(version_cap)s, é muito baixa" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "Retornando exceção %s ao método de origem" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Falha ao processar mensagem...pulando ela." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Falha ao processar mensagem... Irá voltar para a fila." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Reconectando ao servidor AMQP em %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Conectado ao servidor AMQP em %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Não é possível conectar-se ao servidor AMQP no %(hostname)s:%(port)d após %(max_retries)d tentativas: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "O servidor AMQP em %(hostname)s:%(port)d está inatingível: %(err_str)s. Tentando novamente em %(sleep_time)d segundos." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Falha ao declarar consumidor para o tópico '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "Atingido o tempo limite de espera para a resposta de RPC: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Falha ao consumir mensagem da fila: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Falha ao publicar mensagem no tópico '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "Valor inválido para qpid_topology_version: %d" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "Falha ao processar mensagem... ignorando-a." -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "Não é possível conectar ao servidor AMQP: %(e)s. Suspendendo em %(delay)s segundos" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "Conectado ao servidor AMQP em %s" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "Filas AMQP restabelecidas" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "Erro ao processar mensagem. Ignorando-o." -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "Falha na serialização de JSON." -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "Desserializando: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "Conectando ao %(addr)s com %(type)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> Inscrito em %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> ligação: %(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "Não foi possível abrir o soquete." -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "Assinando %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "Não é possível receber neste soquete." -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "Não é possível enviar neste soquete." -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "Executando func com o contexto: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Enviando resposta" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "A mensagem de RPC não incluiu o método." -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "Registrando reator" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" +msgstr "No reator registrado" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" +msgstr "Consumindo soquete" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "Criando proxy para o tópico: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "O tópico continha caracteres perigosos." -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "Falha na criação do arquivo de soquete do tópico." -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "Buffer de lista não processada por tópico local integral para o tópico %(topic)s. Descartando mensagem." -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "Diretório IPC requerido não existe em %s" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "Permissão negada para o doretório IPC em %s" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "Não foi possível criar o daemon receptor ZeroMQ. O soquete já pode estar em uso." -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "CONSUMER RECEIVED DATA: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "Versão de Envelope ZMQ não suportada ou desconhecida." -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "Ignorando registro de tópico. Já registrado." -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "O consumidor é um zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "Criando carga útil" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "Criando soquete de fila para espera de resposta" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "Enviando conversão" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "Conversão enviada; aguardando resposta" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "Mensagem recebida: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "Descompactando resposta" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "Foi retornado um envelope ZMQ não suportado ou desconhecido." -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "Mensagem de RPC Inválida." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "Enviando mensagem(ns) para: %s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "Nenhum resultado do matchmaker. Sem conversão." -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "Nenhuma correspondência do matchmaker." -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s é deprecado; utilize %(new)s em vez disto" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "Correspondência não localizada pelo MatchMaker." -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "O Matchmaker não implementa registro ou pulsação." -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "Matchmaker não registrado: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "Registre antes de iniciar a pulsação." -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "Nenhuma chave definindo hosts para o tópico '%s'; consulte ringfile" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "Criando conexão do Consumidor para o Serviço %s" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" -msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - +msgstr "Falha ao migrar versão %(version)s no mecanismo %(engine)s" diff -Nru ironic-2014.1~b3/ironic/locale/ro/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ro/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ro/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ro/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,89 @@ -# Romanian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Romanian (http://www.transifex.com/projects/p/openstack/language/ro/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ru/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ru/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ru/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ru/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,89 @@ -# Russian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Russian " -"(http://www.transifex.com/projects/p/openstack/language/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" +"Language-Team: Russian (http://www.transifex.com/projects/p/openstack/language/ru/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: 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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Обнаружено неизвестное исключение." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Не авторизировано." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Недопустимые параметры." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "Образ %(image_id)s недопустим: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Ресурс не может быть найден." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Образ %(image_id)s не найден." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Нет доступа к образу %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Недопустимый образ href %(image_href)s." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "Невозможно найти конфигурацию по адресу %(path)s" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." -msgstr "" +msgstr "Ошибка анализа 'qemu-img info'." -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "Преобразование в необработанный, но текущий формат %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Недопустимый внутренний интерфейс: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:845 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1064,12 +1506,12 @@ #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "Запуск повторяющегося задания %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "Ошибка во время %(full_task_name)s: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format @@ -1089,95 +1531,95 @@ #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "Приняты неизвестные аргументы ключевого слова для utils.execute: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Выполнение команды (субпроцесс): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Результат %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r ошибка. Выполняется повтор." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Выполнение команды (SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "Среда не поддерживается с использованием SSH" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "process_input не поддерживается с использованием SSH" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,70 +1665,85 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Недопустимый параметр: Unicode не поддерживается используемой базой данных" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Нераспознанное значение read_deleted '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s не в допустимых приоритетах" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Неполадка '%(e)s', попытка отправить в систему уведомлений. Нагрузка=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format @@ -1299,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "неизвлечённый контекст: %s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "получено %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "не определен метод для сообщения: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Не определен метод для сообщения: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID is %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "Удалённая ошибка: %(exc_type)s %(value)s\n%(traceback)s." -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Неверное переиспользование соединения RPC" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" +msgstr "Возврат исключения %s вызывающему" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Повторное подключение к серверу AMQP на %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "Подключение к серверу AMQP на %(hostname)s:%(port)d" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "Невозможно подключиться к серверу AMQP на %(hostname)s:%(port)d после %(max_retries)d попыток: %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "AMQP сервер на %(hostname)s:%(port)d недоступен: %(err_str)s. Повторная попытка через %(sleep_time)d секунд." -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "Ошибка объявления потребителю темы '%(topic)s': %(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "Ошибка принятия сообщения из очереди: %s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "Ошибка публикации сообщения в тему '%(topic)s': %(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ru_RU/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ru_RU/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ru_RU/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ru_RU/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" +"POT-Creation-Date: 2014-03-28 06:06+0000\n" "PO-Revision-Date: 2013-11-12 16:15+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Russian (Russia) " @@ -19,82 +19,71 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format msgid "Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,735 +94,958 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 +#: ironic/common/exception.py:225 msgid "An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" "Can not change instance association while node %(node)s is in power state" " %(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" "Cannot complete the requested action because chassis %(chassis)s contains" " nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" "Service type %(service_type)s with endpoint type %(endpoint_type)s not " "found in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor " +"workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" "A conductor with hostname %(hostname)s was previously registered. " "Updating registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" "RPC change_node_power_state called for node %(node)s. The desired new " "state is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node " +"state %(actual)s does not match expected state '%(state)s'. Updating DB " +"state to '%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" "During sync_power_state, could not get power state for node %(node)s. " "Error: %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected " +"state '%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" "During sync_power_state, node %(node)s was not found and presumed deleted" " by another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" "RPC change_node_maintenance_mode called for node %(node)s with " "maintanence mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:879 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" "Not going to change_node_power_state because current state = requested " "state = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while " +"aborting. More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" "IPMI get power state failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" "IPMI get power state for node %(node_id)s returns the following details:" " %(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" "IPMI set boot device failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one " +"of %(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:432 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" "Can not validate PXE bootloader. The following parameters were not passed" " to ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason:" +" %(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:129 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:156 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:357 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:387 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:485 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP " +"BOOT options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:504 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:508 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node" +" %(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:543 ironic/drivers/modules/ssh.py:377 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:554 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration " +"file or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:664 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:681 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:695 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:716 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " @@ -841,87 +1053,283 @@ "maintenance mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:728 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:740 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:742 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:745 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:754 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:756 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:111 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:136 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:159 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:175 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:182 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:187 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:196 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:229 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:260 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:265 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:278 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:382 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after " +"%(retries)d retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node " +"%(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1353,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1376,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1538,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1641,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1732,431 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" " \"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" "Specified RPC envelope version, %(version)s, not supported by this " "endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/sk/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/sk/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/sk/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/sk/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Slovak translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \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" +"Language-Team: Slovak (http://www.transifex.com/projects/p/openstack/language/sk/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/sl_SI/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/sl_SI/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/sl_SI/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/sl_SI/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,89 @@ -# Slovenian (Slovenia) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/openstack/language/sl_SI/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/sq/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/sq/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/sq/LC_MESSAGES/ironic.po 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/sq/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,2185 @@ +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ironic project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ironic\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/openstack/language/sq/)\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" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ironic/api/controllers/v1/node.py:202 +#, python-format +msgid "Node %(node)s is already in the '%(state)s' state." +msgstr "" + +#: ironic/api/controllers/v1/node.py:215 +#, python-format +msgid "Node %s is already being provisioned or decommissioned." +msgstr "" + +#: ironic/api/controllers/v1/node.py:436 +msgid "Method not specified" +msgstr "" + +#: ironic/api/controllers/v1/node.py:466 +msgid "Chassis id not specified." +msgstr "" + +#: ironic/api/controllers/v1/node.py:641 +#, python-format +msgid "Node %s can not be updated while a state transition is in progress." +msgstr "" + +#: ironic/api/controllers/v1/port.py:166 +msgid "Node id not specified." +msgstr "" + +#: ironic/api/controllers/v1/types.py:128 +#, python-format +msgid "'%s' is an internal attribute and can not be updated" +msgstr "" + +#: ironic/api/controllers/v1/types.py:132 +#, python-format +msgid "'%s' is a mandatory attribute and can not be removed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:137 +#, python-format +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:143 +msgid "'add' and 'replace' operations needs value" +msgstr "" + +#: ironic/api/controllers/v1/types.py:174 +#, python-format +msgid "Wrong type. Expected '%(type)s', got '%(value)s'" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:31 +msgid "Limit must be positive" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:38 +#, python-format +msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" +msgstr "" + +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:52 +#, python-format +msgid "ErrorDocumentMiddleware received an invalid status %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:80 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ironic/cmd/api.py:53 +#, python-format +msgid "Serving on http://%(host)s:%(port)s" +msgstr "" + +#: ironic/cmd/api.py:55 +msgid "Configuration:" +msgstr "" + +#: ironic/common/exception.py:57 +msgid "An unknown exception occurred." +msgstr "" + +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ironic/common/exception.py:98 +msgid "Not authorized." +msgstr "" + +#: ironic/common/exception.py:103 +msgid "Operation not permitted." +msgstr "" + +#: ironic/common/exception.py:107 +msgid "Unacceptable parameters." +msgstr "" + +#: ironic/common/exception.py:112 +msgid "Conflict." +msgstr "" + +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 +msgid "Invalid resource state." +msgstr "" + +#: ironic/common/exception.py:126 +#, python-format +msgid "A Port with MAC address %(mac)s already exists." +msgstr "" + +#: ironic/common/exception.py:130 +#, python-format +msgid "Expected a uuid but received %(uuid)s." +msgstr "" + +#: ironic/common/exception.py:134 +#, python-format +msgid "Expected an uuid or int but received %(identity)s." +msgstr "" + +#: ironic/common/exception.py:138 +#, python-format +msgid "Expected a MAC address but received %(mac)s." +msgstr "" + +#: ironic/common/exception.py:142 +#, python-format +msgid "Invalid state '%(state)s' requested for node %(node)s." +msgstr "" + +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 +#, python-format +msgid "Failed to deploy instance: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:154 ironic/common/exception.py:158 +#, python-format +msgid "Image %(image_id)s is unacceptable: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:164 +#, python-format +msgid "%(err)s" +msgstr "" + +#: ironic/common/exception.py:168 +msgid "Resource could not be found." +msgstr "" + +#: ironic/common/exception.py:173 +#, python-format +msgid "Failed to load driver %(driver_name)s." +msgstr "" + +#: ironic/common/exception.py:177 +#, python-format +msgid "Image %(image_id)s could not be found." +msgstr "" + +#: ironic/common/exception.py:181 +#, python-format +msgid "No valid host was found. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:185 +#, python-format +msgid "Instance %(instance)s could not be found." +msgstr "" + +#: ironic/common/exception.py:189 +#, python-format +msgid "Node %(node)s could not be found." +msgstr "" + +#: ironic/common/exception.py:193 +#, python-format +msgid "Node %(node)s is associated with instance %(instance)s." +msgstr "" + +#: ironic/common/exception.py:197 +#, python-format +msgid "Port %(port)s could not be found." +msgstr "" + +#: ironic/common/exception.py:201 +#, python-format +msgid "Update DHCP options on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "" + +#: ironic/common/exception.py:213 +#, python-format +msgid "Conductor %(conductor)s could not be found." +msgstr "" + +#: ironic/common/exception.py:217 +#, python-format +msgid "Conductor %(conductor)s already registered." +msgstr "" + +#: ironic/common/exception.py:221 +#, python-format +msgid "Failed to set node power state to %(pstate)s." +msgstr "" + +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." +msgstr "" + +#: ironic/common/exception.py:230 +#, python-format +msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 +#, python-format +msgid "" +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." +msgstr "" + +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 +#, python-format +msgid "IPMI call failed: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:258 +#, python-format +msgid "Failed to establish SSH connection to host %(host)s." +msgstr "" + +#: ironic/common/exception.py:262 +#, python-format +msgid "Failed to execute command via SSH: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:266 +#, python-format +msgid "Unsupported object type %(objtype)s" +msgstr "" + +#: ironic/common/exception.py:270 +#, python-format +msgid "Cannot call %(method)s on orphaned %(objtype)s object" +msgstr "" + +#: ironic/common/exception.py:274 +#, python-format +msgid "Driver %(driver)s does not support %(extension)s." +msgstr "" + +#: ironic/common/exception.py:278 +#, python-format +msgid "Version %(objver)s of %(objname)s is not supported" +msgstr "" + +#: ironic/common/exception.py:282 +#, python-format +msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:287 +#, python-format +msgid "Not authorized for image %(image_id)s." +msgstr "" + +#: ironic/common/exception.py:291 +#, python-format +msgid "Invalid image href %(image_href)s." +msgstr "" + +#: ironic/common/exception.py:295 +msgid "Unauthorised for keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:303 +#, python-format +msgid "" +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:308 +msgid "Connection failed" +msgstr "" + +#: ironic/common/exception.py:312 +msgid "Requested OpenStack Images API is forbidden" +msgstr "" + +#: ironic/common/exception.py:320 +msgid "The provided endpoint is invalid" +msgstr "" + +#: ironic/common/exception.py:324 +msgid "Unable to communicate with the server." +msgstr "" + +#: ironic/common/exception.py:340 +#, python-format +msgid "Could not find config at %(path)s" +msgstr "" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "" + +#: ironic/common/images.py:209 +#, python-format +msgid "fmt=%(fmt)s backed by: %(backing_file)s" +msgstr "" + +#: ironic/common/images.py:215 +#, python-format +msgid "%(image)s was %(format)s, converting to raw" +msgstr "" + +#: ironic/common/images.py:224 +#, python-format +msgid "Converted to raw, but format is now %s" +msgstr "" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 +#, python-format +msgid "Could not perform authorization process for service catalog: %s" +msgstr "" + +#: ironic/common/keystone.py:58 +msgid "No keystone service catalog loaded" +msgstr "" + +#: ironic/common/neutron.py:91 +#, python-format +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." +msgstr "" + +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." +msgstr "" + +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 +#, python-format +msgid "Execution completed, command line is \"%s\"" +msgstr "" + +#: ironic/common/utils.py:66 +#, python-format +msgid "Command stdout is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:67 +#, python-format +msgid "Command stderr is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 +#, python-format +msgid "SSH connect failed: %s" +msgstr "" + +#: ironic/common/utils.py:145 +#, python-format +msgid "Invalid backend: %s" +msgstr "" + +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ironic/common/utils.py:411 +#, python-format +msgid "Could not remove tmpdir: %s" +msgstr "" + +#: ironic/common/utils.py:446 +#, python-format +msgid "Failed to unlink %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:455 +#, python-format +msgid "Failed to remove dir %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:471 +#, python-format +msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:485 +#, python-format +msgid "" +"Failed to remove trailing character. Returning original object. Supplied " +"object is not a string: %s," +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:125 +#, python-format +msgid "" +"Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " +"%(extra)s." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:161 +msgid "Getting a full list of images metadata from glance." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:182 +#, python-format +msgid "Getting image metadata from glance. Image: %s" +msgstr "" + +#: ironic/conductor/manager.py:144 +#, python-format +msgid "" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" +msgstr "" + +#: ironic/conductor/manager.py:165 +#, python-format +msgid "Received notification: %r" +msgstr "" + +#: ironic/conductor/manager.py:188 +#, python-format +msgid "RPC update_node called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:192 +msgid "Invalid method call: update_node can not change node state." +msgstr "" + +#: ironic/conductor/manager.py:233 +#, python-format +msgid "" +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." +msgstr "" + +#: ironic/conductor/manager.py:272 +#, python-format +msgid "RPC vendor_passthru called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:318 +#, python-format +msgid "RPC do_node_deploy called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:324 +#, python-format +msgid "" +"RPC do_node_deploy called for %(node)s, but provision state is already " +"%(state)s." +msgstr "" + +#: ironic/conductor/manager.py:330 +msgid "provisioning" +msgstr "" + +#: ironic/conductor/manager.py:336 +#, python-format +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:363 +#, python-format +msgid "Failed to deploy. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:393 +#, python-format +msgid "RPC do_node_tear_down called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:402 +#, python-format +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgstr "" + +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 +#, python-format +msgid "Failed to tear down. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was already locked by another " +"process. Skip." +msgstr "" + +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 +#, python-format +msgid "RPC validate_driver_interfaces called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:670 +msgid "not supported" +msgstr "" + +#: ironic/conductor/manager.py:689 +#, python-format +msgid "" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" +msgstr "" + +#: ironic/conductor/manager.py:699 +msgid "The node is already in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:700 +msgid "The node is not in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 +msgid "Multi-node TaskManager has no attribute 'node'" +msgstr "" + +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 +msgid "Multi-node TaskManager has no attribute 'driver'" +msgstr "" + +#: ironic/conductor/task_manager.py:226 +msgid "Multi-node TaskManager can't select single node manager from the list" +msgstr "" + +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 +#, python-format +msgid "Failed to change power state to '%(target)s'. Error: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:90 +#, python-format +msgid "" +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." +msgstr "" + +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." +msgstr "" + +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." +msgstr "" + +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:205 +#, python-format +msgid "Parent device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:210 +#, python-format +msgid "Root device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:213 +#, python-format +msgid "Swap device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 +msgid "Failed to detect root device UUID." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 +#, python-format +msgid "Deploy to address %s failed." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:268 +#, python-format +msgid "Command: %s" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:269 +#, python-format +msgid "StdOut: %r" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:270 +#, python-format +msgid "StdErr: %r" +msgstr "" + +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 +#, python-format +msgid "set_power_state called with an invalid power state: %s." +msgstr "" + +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." +msgstr "" + +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:59 +#, python-format +msgid "The following IPMI credentials are not supplied to IPMI driver: %s." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:80 +#, python-format +msgid "" +"IPMI power on failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:110 +#, python-format +msgid "" +"IPMI power off failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:142 +#, python-format +msgid "" +"IPMI power reboot failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:177 +#, python-format +msgid "" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:191 +#, python-format +msgid "" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 +#, python-format +msgid "Invalid boot device %s specified." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:293 +#, python-format +msgid "" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 +msgid "IPMI address not supplied to IPMI driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:197 +#, python-format +msgid "IPMI power %(state)s timed out after %(tries)s retries." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:249 +#, python-format +msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 +#, python-format +msgid "set_power_state called with invalid power state %s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:363 +#, python-format +msgid "Fetching kernel and ramdisk for node %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:393 +#, python-format +msgid "Fetching image %(ami)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 +msgid "Deploy key is not match" +msgstr "" + +#: ironic/drivers/modules/pxe.py:687 +#, python-format +msgid "Parameters %s were not passed to ironic for deploy." +msgstr "" + +#: ironic/drivers/modules/pxe.py:701 +#, python-format +msgid "Unsupported method (%s) passed to PXE driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:722 +#, python-format +msgid "" +"Node %s failed to power off while handling deploy failure. This may be a " +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 +#, python-format +msgid "Error returned from PXE deploy ramdisk: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:748 +msgid "Failure in PXE deploy ramdisk." +msgstr "" + +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "Continuing deployment for node %(node)s, params %(params)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 +msgid "PXE driver failed to continue deployment." +msgstr "" + +#: ironic/drivers/modules/pxe.py:762 +#, python-format +msgid "Deployment to node %s done" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 +#, python-format +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:262 +#, python-format +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:189 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:207 +#, python-format +msgid "Got file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:211 +#, python-format +msgid "Released file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:249 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:253 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/log.py:303 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ironic/openstack/common/log.py:402 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ironic/openstack/common/log.py:453 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ironic/openstack/common/log.py:623 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:84 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:91 +msgid "in fixed duration looping call" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:131 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:138 +msgid "in dynamic looping call" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:43 +#, python-format +msgid "Unexpected argument for periodic task creation: %(arg)s." +msgstr "" + +#: ironic/openstack/common/periodic_task.py:134 +#, python-format +msgid "Skipping periodic task %(task)s because its interval is negative" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:139 +#, python-format +msgid "Skipping periodic task %(task)s because it is disabled" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:177 +#, python-format +msgid "Running periodic task %(full_task_name)s" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:186 +#, python-format +msgid "Error during %(full_task_name)s: %(e)s" +msgstr "" + +#: ironic/openstack/common/policy.py:395 +#, python-format +msgid "Failed to understand rule %(rule)s" +msgstr "" + +#: ironic/openstack/common/policy.py:405 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ironic/openstack/common/policy.py:680 +#, python-format +msgid "Failed to understand rule %(rule)r" +msgstr "" + +#: ironic/openstack/common/processutils.py:127 +#, python-format +msgid "Got unknown keyword args to utils.execute: %r" +msgstr "" + +#: ironic/openstack/common/processutils.py:142 +#, python-format +msgid "Running cmd (subprocess): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:167 +#: ironic/openstack/common/processutils.py:240 +#, python-format +msgid "Result was %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:179 +#, python-format +msgid "%r failed. Retrying." +msgstr "" + +#: ironic/openstack/common/processutils.py:219 +#, python-format +msgid "Running cmd (SSH): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:221 +msgid "Environment not supported over SSH" +msgstr "" + +#: ironic/openstack/common/processutils.py:225 +msgid "process_input not supported over SSH" +msgstr "" + +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ironic/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ironic/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ironic/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ironic/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ironic/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ironic/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ironic/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ironic/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ironic/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ironic/openstack/common/sslutils.py:52 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:55 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:58 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:61 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ironic/openstack/common/sslutils.py:100 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:88 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ironic/openstack/common/strutils.py:184 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:191 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ironic/openstack/common/db/exception.py:44 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:60 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 +msgid "Unsupported id columns type" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ironic/openstack/common/notifier/rpc_notifier.py:45 +#: ironic/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ironic/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 +#, python-format +msgid "Failed to migrate to version %(version)s on engine %(engine)s" +msgstr "" diff -Nru ironic-2014.1~b3/ironic/locale/sr/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/sr/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/sr/LC_MESSAGES/ironic.po 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/sr/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,2185 @@ +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ironic project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ironic\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Serbian (http://www.transifex.com/projects/p/openstack/language/sr/)\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" +"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" + +#: ironic/api/controllers/v1/node.py:202 +#, python-format +msgid "Node %(node)s is already in the '%(state)s' state." +msgstr "" + +#: ironic/api/controllers/v1/node.py:215 +#, python-format +msgid "Node %s is already being provisioned or decommissioned." +msgstr "" + +#: ironic/api/controllers/v1/node.py:436 +msgid "Method not specified" +msgstr "" + +#: ironic/api/controllers/v1/node.py:466 +msgid "Chassis id not specified." +msgstr "" + +#: ironic/api/controllers/v1/node.py:641 +#, python-format +msgid "Node %s can not be updated while a state transition is in progress." +msgstr "" + +#: ironic/api/controllers/v1/port.py:166 +msgid "Node id not specified." +msgstr "" + +#: ironic/api/controllers/v1/types.py:128 +#, python-format +msgid "'%s' is an internal attribute and can not be updated" +msgstr "" + +#: ironic/api/controllers/v1/types.py:132 +#, python-format +msgid "'%s' is a mandatory attribute and can not be removed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:137 +#, python-format +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:143 +msgid "'add' and 'replace' operations needs value" +msgstr "" + +#: ironic/api/controllers/v1/types.py:174 +#, python-format +msgid "Wrong type. Expected '%(type)s', got '%(value)s'" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:31 +msgid "Limit must be positive" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:38 +#, python-format +msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" +msgstr "" + +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:52 +#, python-format +msgid "ErrorDocumentMiddleware received an invalid status %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:80 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ironic/cmd/api.py:53 +#, python-format +msgid "Serving on http://%(host)s:%(port)s" +msgstr "" + +#: ironic/cmd/api.py:55 +msgid "Configuration:" +msgstr "" + +#: ironic/common/exception.py:57 +msgid "An unknown exception occurred." +msgstr "" + +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ironic/common/exception.py:98 +msgid "Not authorized." +msgstr "" + +#: ironic/common/exception.py:103 +msgid "Operation not permitted." +msgstr "" + +#: ironic/common/exception.py:107 +msgid "Unacceptable parameters." +msgstr "" + +#: ironic/common/exception.py:112 +msgid "Conflict." +msgstr "" + +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 +msgid "Invalid resource state." +msgstr "" + +#: ironic/common/exception.py:126 +#, python-format +msgid "A Port with MAC address %(mac)s already exists." +msgstr "" + +#: ironic/common/exception.py:130 +#, python-format +msgid "Expected a uuid but received %(uuid)s." +msgstr "" + +#: ironic/common/exception.py:134 +#, python-format +msgid "Expected an uuid or int but received %(identity)s." +msgstr "" + +#: ironic/common/exception.py:138 +#, python-format +msgid "Expected a MAC address but received %(mac)s." +msgstr "" + +#: ironic/common/exception.py:142 +#, python-format +msgid "Invalid state '%(state)s' requested for node %(node)s." +msgstr "" + +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 +#, python-format +msgid "Failed to deploy instance: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:154 ironic/common/exception.py:158 +#, python-format +msgid "Image %(image_id)s is unacceptable: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:164 +#, python-format +msgid "%(err)s" +msgstr "" + +#: ironic/common/exception.py:168 +msgid "Resource could not be found." +msgstr "" + +#: ironic/common/exception.py:173 +#, python-format +msgid "Failed to load driver %(driver_name)s." +msgstr "" + +#: ironic/common/exception.py:177 +#, python-format +msgid "Image %(image_id)s could not be found." +msgstr "" + +#: ironic/common/exception.py:181 +#, python-format +msgid "No valid host was found. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:185 +#, python-format +msgid "Instance %(instance)s could not be found." +msgstr "" + +#: ironic/common/exception.py:189 +#, python-format +msgid "Node %(node)s could not be found." +msgstr "" + +#: ironic/common/exception.py:193 +#, python-format +msgid "Node %(node)s is associated with instance %(instance)s." +msgstr "" + +#: ironic/common/exception.py:197 +#, python-format +msgid "Port %(port)s could not be found." +msgstr "" + +#: ironic/common/exception.py:201 +#, python-format +msgid "Update DHCP options on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "" + +#: ironic/common/exception.py:213 +#, python-format +msgid "Conductor %(conductor)s could not be found." +msgstr "" + +#: ironic/common/exception.py:217 +#, python-format +msgid "Conductor %(conductor)s already registered." +msgstr "" + +#: ironic/common/exception.py:221 +#, python-format +msgid "Failed to set node power state to %(pstate)s." +msgstr "" + +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." +msgstr "" + +#: ironic/common/exception.py:230 +#, python-format +msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 +#, python-format +msgid "" +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." +msgstr "" + +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 +#, python-format +msgid "IPMI call failed: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:258 +#, python-format +msgid "Failed to establish SSH connection to host %(host)s." +msgstr "" + +#: ironic/common/exception.py:262 +#, python-format +msgid "Failed to execute command via SSH: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:266 +#, python-format +msgid "Unsupported object type %(objtype)s" +msgstr "" + +#: ironic/common/exception.py:270 +#, python-format +msgid "Cannot call %(method)s on orphaned %(objtype)s object" +msgstr "" + +#: ironic/common/exception.py:274 +#, python-format +msgid "Driver %(driver)s does not support %(extension)s." +msgstr "" + +#: ironic/common/exception.py:278 +#, python-format +msgid "Version %(objver)s of %(objname)s is not supported" +msgstr "" + +#: ironic/common/exception.py:282 +#, python-format +msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:287 +#, python-format +msgid "Not authorized for image %(image_id)s." +msgstr "" + +#: ironic/common/exception.py:291 +#, python-format +msgid "Invalid image href %(image_href)s." +msgstr "" + +#: ironic/common/exception.py:295 +msgid "Unauthorised for keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:303 +#, python-format +msgid "" +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:308 +msgid "Connection failed" +msgstr "" + +#: ironic/common/exception.py:312 +msgid "Requested OpenStack Images API is forbidden" +msgstr "" + +#: ironic/common/exception.py:320 +msgid "The provided endpoint is invalid" +msgstr "" + +#: ironic/common/exception.py:324 +msgid "Unable to communicate with the server." +msgstr "" + +#: ironic/common/exception.py:340 +#, python-format +msgid "Could not find config at %(path)s" +msgstr "" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "" + +#: ironic/common/images.py:209 +#, python-format +msgid "fmt=%(fmt)s backed by: %(backing_file)s" +msgstr "" + +#: ironic/common/images.py:215 +#, python-format +msgid "%(image)s was %(format)s, converting to raw" +msgstr "" + +#: ironic/common/images.py:224 +#, python-format +msgid "Converted to raw, but format is now %s" +msgstr "" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 +#, python-format +msgid "Could not perform authorization process for service catalog: %s" +msgstr "" + +#: ironic/common/keystone.py:58 +msgid "No keystone service catalog loaded" +msgstr "" + +#: ironic/common/neutron.py:91 +#, python-format +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." +msgstr "" + +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." +msgstr "" + +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 +#, python-format +msgid "Execution completed, command line is \"%s\"" +msgstr "" + +#: ironic/common/utils.py:66 +#, python-format +msgid "Command stdout is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:67 +#, python-format +msgid "Command stderr is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 +#, python-format +msgid "SSH connect failed: %s" +msgstr "" + +#: ironic/common/utils.py:145 +#, python-format +msgid "Invalid backend: %s" +msgstr "" + +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ironic/common/utils.py:411 +#, python-format +msgid "Could not remove tmpdir: %s" +msgstr "" + +#: ironic/common/utils.py:446 +#, python-format +msgid "Failed to unlink %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:455 +#, python-format +msgid "Failed to remove dir %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:471 +#, python-format +msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:485 +#, python-format +msgid "" +"Failed to remove trailing character. Returning original object. Supplied " +"object is not a string: %s," +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:125 +#, python-format +msgid "" +"Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " +"%(extra)s." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:161 +msgid "Getting a full list of images metadata from glance." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:182 +#, python-format +msgid "Getting image metadata from glance. Image: %s" +msgstr "" + +#: ironic/conductor/manager.py:144 +#, python-format +msgid "" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" +msgstr "" + +#: ironic/conductor/manager.py:165 +#, python-format +msgid "Received notification: %r" +msgstr "" + +#: ironic/conductor/manager.py:188 +#, python-format +msgid "RPC update_node called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:192 +msgid "Invalid method call: update_node can not change node state." +msgstr "" + +#: ironic/conductor/manager.py:233 +#, python-format +msgid "" +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." +msgstr "" + +#: ironic/conductor/manager.py:272 +#, python-format +msgid "RPC vendor_passthru called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:318 +#, python-format +msgid "RPC do_node_deploy called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:324 +#, python-format +msgid "" +"RPC do_node_deploy called for %(node)s, but provision state is already " +"%(state)s." +msgstr "" + +#: ironic/conductor/manager.py:330 +msgid "provisioning" +msgstr "" + +#: ironic/conductor/manager.py:336 +#, python-format +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:363 +#, python-format +msgid "Failed to deploy. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:393 +#, python-format +msgid "RPC do_node_tear_down called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:402 +#, python-format +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgstr "" + +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 +#, python-format +msgid "Failed to tear down. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was already locked by another " +"process. Skip." +msgstr "" + +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 +#, python-format +msgid "RPC validate_driver_interfaces called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:670 +msgid "not supported" +msgstr "" + +#: ironic/conductor/manager.py:689 +#, python-format +msgid "" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" +msgstr "" + +#: ironic/conductor/manager.py:699 +msgid "The node is already in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:700 +msgid "The node is not in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 +msgid "Multi-node TaskManager has no attribute 'node'" +msgstr "" + +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 +msgid "Multi-node TaskManager has no attribute 'driver'" +msgstr "" + +#: ironic/conductor/task_manager.py:226 +msgid "Multi-node TaskManager can't select single node manager from the list" +msgstr "" + +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 +#, python-format +msgid "Failed to change power state to '%(target)s'. Error: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:90 +#, python-format +msgid "" +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." +msgstr "" + +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." +msgstr "" + +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." +msgstr "" + +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:205 +#, python-format +msgid "Parent device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:210 +#, python-format +msgid "Root device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:213 +#, python-format +msgid "Swap device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 +msgid "Failed to detect root device UUID." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 +#, python-format +msgid "Deploy to address %s failed." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:268 +#, python-format +msgid "Command: %s" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:269 +#, python-format +msgid "StdOut: %r" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:270 +#, python-format +msgid "StdErr: %r" +msgstr "" + +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 +#, python-format +msgid "set_power_state called with an invalid power state: %s." +msgstr "" + +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." +msgstr "" + +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:59 +#, python-format +msgid "The following IPMI credentials are not supplied to IPMI driver: %s." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:80 +#, python-format +msgid "" +"IPMI power on failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:110 +#, python-format +msgid "" +"IPMI power off failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:142 +#, python-format +msgid "" +"IPMI power reboot failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:177 +#, python-format +msgid "" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:191 +#, python-format +msgid "" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 +#, python-format +msgid "Invalid boot device %s specified." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:293 +#, python-format +msgid "" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 +msgid "IPMI address not supplied to IPMI driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:197 +#, python-format +msgid "IPMI power %(state)s timed out after %(tries)s retries." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:249 +#, python-format +msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 +#, python-format +msgid "set_power_state called with invalid power state %s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:363 +#, python-format +msgid "Fetching kernel and ramdisk for node %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:393 +#, python-format +msgid "Fetching image %(ami)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 +msgid "Deploy key is not match" +msgstr "" + +#: ironic/drivers/modules/pxe.py:687 +#, python-format +msgid "Parameters %s were not passed to ironic for deploy." +msgstr "" + +#: ironic/drivers/modules/pxe.py:701 +#, python-format +msgid "Unsupported method (%s) passed to PXE driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:722 +#, python-format +msgid "" +"Node %s failed to power off while handling deploy failure. This may be a " +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 +#, python-format +msgid "Error returned from PXE deploy ramdisk: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:748 +msgid "Failure in PXE deploy ramdisk." +msgstr "" + +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "Continuing deployment for node %(node)s, params %(params)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 +msgid "PXE driver failed to continue deployment." +msgstr "" + +#: ironic/drivers/modules/pxe.py:762 +#, python-format +msgid "Deployment to node %s done" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 +#, python-format +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:262 +#, python-format +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:189 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:207 +#, python-format +msgid "Got file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:211 +#, python-format +msgid "Released file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:249 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:253 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/log.py:303 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ironic/openstack/common/log.py:402 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ironic/openstack/common/log.py:453 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "syslog okruženje mora biti jedno od: %s" + +#: ironic/openstack/common/log.py:623 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:84 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:91 +msgid "in fixed duration looping call" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:131 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:138 +msgid "in dynamic looping call" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:43 +#, python-format +msgid "Unexpected argument for periodic task creation: %(arg)s." +msgstr "" + +#: ironic/openstack/common/periodic_task.py:134 +#, python-format +msgid "Skipping periodic task %(task)s because its interval is negative" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:139 +#, python-format +msgid "Skipping periodic task %(task)s because it is disabled" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:177 +#, python-format +msgid "Running periodic task %(full_task_name)s" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:186 +#, python-format +msgid "Error during %(full_task_name)s: %(e)s" +msgstr "" + +#: ironic/openstack/common/policy.py:395 +#, python-format +msgid "Failed to understand rule %(rule)s" +msgstr "" + +#: ironic/openstack/common/policy.py:405 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ironic/openstack/common/policy.py:680 +#, python-format +msgid "Failed to understand rule %(rule)r" +msgstr "" + +#: ironic/openstack/common/processutils.py:127 +#, python-format +msgid "Got unknown keyword args to utils.execute: %r" +msgstr "" + +#: ironic/openstack/common/processutils.py:142 +#, python-format +msgid "Running cmd (subprocess): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:167 +#: ironic/openstack/common/processutils.py:240 +#, python-format +msgid "Result was %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:179 +#, python-format +msgid "%r failed. Retrying." +msgstr "" + +#: ironic/openstack/common/processutils.py:219 +#, python-format +msgid "Running cmd (SSH): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:221 +msgid "Environment not supported over SSH" +msgstr "" + +#: ironic/openstack/common/processutils.py:225 +msgid "process_input not supported over SSH" +msgstr "" + +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ironic/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ironic/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ironic/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ironic/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ironic/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ironic/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ironic/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ironic/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ironic/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ironic/openstack/common/sslutils.py:52 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:55 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:58 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:61 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ironic/openstack/common/sslutils.py:100 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:88 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ironic/openstack/common/strutils.py:184 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:191 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ironic/openstack/common/db/exception.py:44 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:60 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 +msgid "Unsupported id columns type" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ironic/openstack/common/notifier/rpc_notifier.py:45 +#: ironic/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ironic/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 +#, python-format +msgid "Failed to migrate to version %(version)s on engine %(engine)s" +msgstr "" diff -Nru ironic-2014.1~b3/ironic/locale/sv/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/sv/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/sv/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/sv/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Swedish translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-15 02:27+0000\n" -"Last-Translator: Tom Fifield \n" -"Language-Team: Swedish " -"(http://www.transifex.com/projects/p/openstack/language/sv/)\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Swedish (http://www.transifex.com/projects/p/openstack/language/sv/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/sw_KE/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/sw_KE/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/sw_KE/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/sw_KE/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Swahili (Kenya) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Swahili (Kenya) (http://www.transifex.com/projects/p/openstack/language/sw_KE/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: sw_KE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ta/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ta/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ta/LC_MESSAGES/ironic.po 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ta/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,2185 @@ +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ironic project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ironic\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Tamil (http://www.transifex.com/projects/p/openstack/language/ta/)\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" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ironic/api/controllers/v1/node.py:202 +#, python-format +msgid "Node %(node)s is already in the '%(state)s' state." +msgstr "" + +#: ironic/api/controllers/v1/node.py:215 +#, python-format +msgid "Node %s is already being provisioned or decommissioned." +msgstr "" + +#: ironic/api/controllers/v1/node.py:436 +msgid "Method not specified" +msgstr "" + +#: ironic/api/controllers/v1/node.py:466 +msgid "Chassis id not specified." +msgstr "" + +#: ironic/api/controllers/v1/node.py:641 +#, python-format +msgid "Node %s can not be updated while a state transition is in progress." +msgstr "" + +#: ironic/api/controllers/v1/port.py:166 +msgid "Node id not specified." +msgstr "" + +#: ironic/api/controllers/v1/types.py:128 +#, python-format +msgid "'%s' is an internal attribute and can not be updated" +msgstr "" + +#: ironic/api/controllers/v1/types.py:132 +#, python-format +msgid "'%s' is a mandatory attribute and can not be removed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:137 +#, python-format +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:143 +msgid "'add' and 'replace' operations needs value" +msgstr "" + +#: ironic/api/controllers/v1/types.py:174 +#, python-format +msgid "Wrong type. Expected '%(type)s', got '%(value)s'" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:31 +msgid "Limit must be positive" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:38 +#, python-format +msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" +msgstr "" + +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:52 +#, python-format +msgid "ErrorDocumentMiddleware received an invalid status %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:80 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ironic/cmd/api.py:53 +#, python-format +msgid "Serving on http://%(host)s:%(port)s" +msgstr "" + +#: ironic/cmd/api.py:55 +msgid "Configuration:" +msgstr "" + +#: ironic/common/exception.py:57 +msgid "An unknown exception occurred." +msgstr "" + +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ironic/common/exception.py:98 +msgid "Not authorized." +msgstr "" + +#: ironic/common/exception.py:103 +msgid "Operation not permitted." +msgstr "" + +#: ironic/common/exception.py:107 +msgid "Unacceptable parameters." +msgstr "" + +#: ironic/common/exception.py:112 +msgid "Conflict." +msgstr "" + +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 +msgid "Invalid resource state." +msgstr "" + +#: ironic/common/exception.py:126 +#, python-format +msgid "A Port with MAC address %(mac)s already exists." +msgstr "" + +#: ironic/common/exception.py:130 +#, python-format +msgid "Expected a uuid but received %(uuid)s." +msgstr "" + +#: ironic/common/exception.py:134 +#, python-format +msgid "Expected an uuid or int but received %(identity)s." +msgstr "" + +#: ironic/common/exception.py:138 +#, python-format +msgid "Expected a MAC address but received %(mac)s." +msgstr "" + +#: ironic/common/exception.py:142 +#, python-format +msgid "Invalid state '%(state)s' requested for node %(node)s." +msgstr "" + +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 +#, python-format +msgid "Failed to deploy instance: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:154 ironic/common/exception.py:158 +#, python-format +msgid "Image %(image_id)s is unacceptable: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:164 +#, python-format +msgid "%(err)s" +msgstr "" + +#: ironic/common/exception.py:168 +msgid "Resource could not be found." +msgstr "" + +#: ironic/common/exception.py:173 +#, python-format +msgid "Failed to load driver %(driver_name)s." +msgstr "" + +#: ironic/common/exception.py:177 +#, python-format +msgid "Image %(image_id)s could not be found." +msgstr "" + +#: ironic/common/exception.py:181 +#, python-format +msgid "No valid host was found. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:185 +#, python-format +msgid "Instance %(instance)s could not be found." +msgstr "" + +#: ironic/common/exception.py:189 +#, python-format +msgid "Node %(node)s could not be found." +msgstr "" + +#: ironic/common/exception.py:193 +#, python-format +msgid "Node %(node)s is associated with instance %(instance)s." +msgstr "" + +#: ironic/common/exception.py:197 +#, python-format +msgid "Port %(port)s could not be found." +msgstr "" + +#: ironic/common/exception.py:201 +#, python-format +msgid "Update DHCP options on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "" + +#: ironic/common/exception.py:213 +#, python-format +msgid "Conductor %(conductor)s could not be found." +msgstr "" + +#: ironic/common/exception.py:217 +#, python-format +msgid "Conductor %(conductor)s already registered." +msgstr "" + +#: ironic/common/exception.py:221 +#, python-format +msgid "Failed to set node power state to %(pstate)s." +msgstr "" + +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." +msgstr "" + +#: ironic/common/exception.py:230 +#, python-format +msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 +#, python-format +msgid "" +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." +msgstr "" + +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 +#, python-format +msgid "IPMI call failed: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:258 +#, python-format +msgid "Failed to establish SSH connection to host %(host)s." +msgstr "" + +#: ironic/common/exception.py:262 +#, python-format +msgid "Failed to execute command via SSH: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:266 +#, python-format +msgid "Unsupported object type %(objtype)s" +msgstr "" + +#: ironic/common/exception.py:270 +#, python-format +msgid "Cannot call %(method)s on orphaned %(objtype)s object" +msgstr "" + +#: ironic/common/exception.py:274 +#, python-format +msgid "Driver %(driver)s does not support %(extension)s." +msgstr "" + +#: ironic/common/exception.py:278 +#, python-format +msgid "Version %(objver)s of %(objname)s is not supported" +msgstr "" + +#: ironic/common/exception.py:282 +#, python-format +msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:287 +#, python-format +msgid "Not authorized for image %(image_id)s." +msgstr "" + +#: ironic/common/exception.py:291 +#, python-format +msgid "Invalid image href %(image_href)s." +msgstr "" + +#: ironic/common/exception.py:295 +msgid "Unauthorised for keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:303 +#, python-format +msgid "" +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:308 +msgid "Connection failed" +msgstr "" + +#: ironic/common/exception.py:312 +msgid "Requested OpenStack Images API is forbidden" +msgstr "" + +#: ironic/common/exception.py:320 +msgid "The provided endpoint is invalid" +msgstr "" + +#: ironic/common/exception.py:324 +msgid "Unable to communicate with the server." +msgstr "" + +#: ironic/common/exception.py:340 +#, python-format +msgid "Could not find config at %(path)s" +msgstr "" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "" + +#: ironic/common/images.py:209 +#, python-format +msgid "fmt=%(fmt)s backed by: %(backing_file)s" +msgstr "" + +#: ironic/common/images.py:215 +#, python-format +msgid "%(image)s was %(format)s, converting to raw" +msgstr "" + +#: ironic/common/images.py:224 +#, python-format +msgid "Converted to raw, but format is now %s" +msgstr "" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 +#, python-format +msgid "Could not perform authorization process for service catalog: %s" +msgstr "" + +#: ironic/common/keystone.py:58 +msgid "No keystone service catalog loaded" +msgstr "" + +#: ironic/common/neutron.py:91 +#, python-format +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." +msgstr "" + +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." +msgstr "" + +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 +#, python-format +msgid "Execution completed, command line is \"%s\"" +msgstr "" + +#: ironic/common/utils.py:66 +#, python-format +msgid "Command stdout is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:67 +#, python-format +msgid "Command stderr is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 +#, python-format +msgid "SSH connect failed: %s" +msgstr "" + +#: ironic/common/utils.py:145 +#, python-format +msgid "Invalid backend: %s" +msgstr "" + +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ironic/common/utils.py:411 +#, python-format +msgid "Could not remove tmpdir: %s" +msgstr "" + +#: ironic/common/utils.py:446 +#, python-format +msgid "Failed to unlink %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:455 +#, python-format +msgid "Failed to remove dir %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:471 +#, python-format +msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:485 +#, python-format +msgid "" +"Failed to remove trailing character. Returning original object. Supplied " +"object is not a string: %s," +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:125 +#, python-format +msgid "" +"Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " +"%(extra)s." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:161 +msgid "Getting a full list of images metadata from glance." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:182 +#, python-format +msgid "Getting image metadata from glance. Image: %s" +msgstr "" + +#: ironic/conductor/manager.py:144 +#, python-format +msgid "" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" +msgstr "" + +#: ironic/conductor/manager.py:165 +#, python-format +msgid "Received notification: %r" +msgstr "" + +#: ironic/conductor/manager.py:188 +#, python-format +msgid "RPC update_node called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:192 +msgid "Invalid method call: update_node can not change node state." +msgstr "" + +#: ironic/conductor/manager.py:233 +#, python-format +msgid "" +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." +msgstr "" + +#: ironic/conductor/manager.py:272 +#, python-format +msgid "RPC vendor_passthru called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:318 +#, python-format +msgid "RPC do_node_deploy called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:324 +#, python-format +msgid "" +"RPC do_node_deploy called for %(node)s, but provision state is already " +"%(state)s." +msgstr "" + +#: ironic/conductor/manager.py:330 +msgid "provisioning" +msgstr "" + +#: ironic/conductor/manager.py:336 +#, python-format +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:363 +#, python-format +msgid "Failed to deploy. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:393 +#, python-format +msgid "RPC do_node_tear_down called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:402 +#, python-format +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgstr "" + +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 +#, python-format +msgid "Failed to tear down. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was already locked by another " +"process. Skip." +msgstr "" + +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 +#, python-format +msgid "RPC validate_driver_interfaces called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:670 +msgid "not supported" +msgstr "" + +#: ironic/conductor/manager.py:689 +#, python-format +msgid "" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" +msgstr "" + +#: ironic/conductor/manager.py:699 +msgid "The node is already in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:700 +msgid "The node is not in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 +msgid "Multi-node TaskManager has no attribute 'node'" +msgstr "" + +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 +msgid "Multi-node TaskManager has no attribute 'driver'" +msgstr "" + +#: ironic/conductor/task_manager.py:226 +msgid "Multi-node TaskManager can't select single node manager from the list" +msgstr "" + +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 +#, python-format +msgid "Failed to change power state to '%(target)s'. Error: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:90 +#, python-format +msgid "" +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." +msgstr "" + +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." +msgstr "" + +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." +msgstr "" + +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:205 +#, python-format +msgid "Parent device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:210 +#, python-format +msgid "Root device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:213 +#, python-format +msgid "Swap device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 +msgid "Failed to detect root device UUID." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 +#, python-format +msgid "Deploy to address %s failed." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:268 +#, python-format +msgid "Command: %s" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:269 +#, python-format +msgid "StdOut: %r" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:270 +#, python-format +msgid "StdErr: %r" +msgstr "" + +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 +#, python-format +msgid "set_power_state called with an invalid power state: %s." +msgstr "" + +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." +msgstr "" + +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:59 +#, python-format +msgid "The following IPMI credentials are not supplied to IPMI driver: %s." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:80 +#, python-format +msgid "" +"IPMI power on failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:110 +#, python-format +msgid "" +"IPMI power off failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:142 +#, python-format +msgid "" +"IPMI power reboot failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:177 +#, python-format +msgid "" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:191 +#, python-format +msgid "" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 +#, python-format +msgid "Invalid boot device %s specified." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:293 +#, python-format +msgid "" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 +msgid "IPMI address not supplied to IPMI driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:197 +#, python-format +msgid "IPMI power %(state)s timed out after %(tries)s retries." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:249 +#, python-format +msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 +#, python-format +msgid "set_power_state called with invalid power state %s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:363 +#, python-format +msgid "Fetching kernel and ramdisk for node %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:393 +#, python-format +msgid "Fetching image %(ami)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 +msgid "Deploy key is not match" +msgstr "" + +#: ironic/drivers/modules/pxe.py:687 +#, python-format +msgid "Parameters %s were not passed to ironic for deploy." +msgstr "" + +#: ironic/drivers/modules/pxe.py:701 +#, python-format +msgid "Unsupported method (%s) passed to PXE driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:722 +#, python-format +msgid "" +"Node %s failed to power off while handling deploy failure. This may be a " +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 +#, python-format +msgid "Error returned from PXE deploy ramdisk: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:748 +msgid "Failure in PXE deploy ramdisk." +msgstr "" + +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "Continuing deployment for node %(node)s, params %(params)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 +msgid "PXE driver failed to continue deployment." +msgstr "" + +#: ironic/drivers/modules/pxe.py:762 +#, python-format +msgid "Deployment to node %s done" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 +#, python-format +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:262 +#, python-format +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:189 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:207 +#, python-format +msgid "Got file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:211 +#, python-format +msgid "Released file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:249 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:253 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/log.py:303 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ironic/openstack/common/log.py:402 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ironic/openstack/common/log.py:453 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ironic/openstack/common/log.py:623 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:84 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:91 +msgid "in fixed duration looping call" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:131 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:138 +msgid "in dynamic looping call" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:43 +#, python-format +msgid "Unexpected argument for periodic task creation: %(arg)s." +msgstr "" + +#: ironic/openstack/common/periodic_task.py:134 +#, python-format +msgid "Skipping periodic task %(task)s because its interval is negative" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:139 +#, python-format +msgid "Skipping periodic task %(task)s because it is disabled" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:177 +#, python-format +msgid "Running periodic task %(full_task_name)s" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:186 +#, python-format +msgid "Error during %(full_task_name)s: %(e)s" +msgstr "" + +#: ironic/openstack/common/policy.py:395 +#, python-format +msgid "Failed to understand rule %(rule)s" +msgstr "" + +#: ironic/openstack/common/policy.py:405 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ironic/openstack/common/policy.py:680 +#, python-format +msgid "Failed to understand rule %(rule)r" +msgstr "" + +#: ironic/openstack/common/processutils.py:127 +#, python-format +msgid "Got unknown keyword args to utils.execute: %r" +msgstr "" + +#: ironic/openstack/common/processutils.py:142 +#, python-format +msgid "Running cmd (subprocess): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:167 +#: ironic/openstack/common/processutils.py:240 +#, python-format +msgid "Result was %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:179 +#, python-format +msgid "%r failed. Retrying." +msgstr "" + +#: ironic/openstack/common/processutils.py:219 +#, python-format +msgid "Running cmd (SSH): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:221 +msgid "Environment not supported over SSH" +msgstr "" + +#: ironic/openstack/common/processutils.py:225 +msgid "process_input not supported over SSH" +msgstr "" + +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ironic/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ironic/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ironic/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ironic/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ironic/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ironic/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ironic/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ironic/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ironic/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ironic/openstack/common/sslutils.py:52 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:55 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:58 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:61 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ironic/openstack/common/sslutils.py:100 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:88 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ironic/openstack/common/strutils.py:184 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:191 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ironic/openstack/common/db/exception.py:44 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:60 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 +msgid "Unsupported id columns type" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ironic/openstack/common/notifier/rpc_notifier.py:45 +#: ironic/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ironic/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 +#, python-format +msgid "Failed to migrate to version %(version)s on engine %(engine)s" +msgstr "" diff -Nru ironic-2014.1~b3/ironic/locale/te_IN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/te_IN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/te_IN/LC_MESSAGES/ironic.po 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/te_IN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,2185 @@ +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ironic project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ironic\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Telugu (India) (http://www.transifex.com/projects/p/openstack/language/te_IN/)\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" +"Language: te_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ironic/api/controllers/v1/node.py:202 +#, python-format +msgid "Node %(node)s is already in the '%(state)s' state." +msgstr "" + +#: ironic/api/controllers/v1/node.py:215 +#, python-format +msgid "Node %s is already being provisioned or decommissioned." +msgstr "" + +#: ironic/api/controllers/v1/node.py:436 +msgid "Method not specified" +msgstr "" + +#: ironic/api/controllers/v1/node.py:466 +msgid "Chassis id not specified." +msgstr "" + +#: ironic/api/controllers/v1/node.py:641 +#, python-format +msgid "Node %s can not be updated while a state transition is in progress." +msgstr "" + +#: ironic/api/controllers/v1/port.py:166 +msgid "Node id not specified." +msgstr "" + +#: ironic/api/controllers/v1/types.py:128 +#, python-format +msgid "'%s' is an internal attribute and can not be updated" +msgstr "" + +#: ironic/api/controllers/v1/types.py:132 +#, python-format +msgid "'%s' is a mandatory attribute and can not be removed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:137 +#, python-format +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" +msgstr "" + +#: ironic/api/controllers/v1/types.py:143 +msgid "'add' and 'replace' operations needs value" +msgstr "" + +#: ironic/api/controllers/v1/types.py:174 +#, python-format +msgid "Wrong type. Expected '%(type)s', got '%(value)s'" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:31 +msgid "Limit must be positive" +msgstr "" + +#: ironic/api/controllers/v1/utils.py:38 +#, python-format +msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" +msgstr "" + +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:52 +#, python-format +msgid "ErrorDocumentMiddleware received an invalid status %s" +msgstr "" + +#: ironic/api/middleware/parsable_error.py:80 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ironic/cmd/api.py:53 +#, python-format +msgid "Serving on http://%(host)s:%(port)s" +msgstr "" + +#: ironic/cmd/api.py:55 +msgid "Configuration:" +msgstr "" + +#: ironic/common/exception.py:57 +msgid "An unknown exception occurred." +msgstr "" + +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ironic/common/exception.py:98 +msgid "Not authorized." +msgstr "" + +#: ironic/common/exception.py:103 +msgid "Operation not permitted." +msgstr "" + +#: ironic/common/exception.py:107 +msgid "Unacceptable parameters." +msgstr "" + +#: ironic/common/exception.py:112 +msgid "Conflict." +msgstr "" + +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 +msgid "Invalid resource state." +msgstr "" + +#: ironic/common/exception.py:126 +#, python-format +msgid "A Port with MAC address %(mac)s already exists." +msgstr "" + +#: ironic/common/exception.py:130 +#, python-format +msgid "Expected a uuid but received %(uuid)s." +msgstr "" + +#: ironic/common/exception.py:134 +#, python-format +msgid "Expected an uuid or int but received %(identity)s." +msgstr "" + +#: ironic/common/exception.py:138 +#, python-format +msgid "Expected a MAC address but received %(mac)s." +msgstr "" + +#: ironic/common/exception.py:142 +#, python-format +msgid "Invalid state '%(state)s' requested for node %(node)s." +msgstr "" + +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 +#, python-format +msgid "Failed to deploy instance: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:154 ironic/common/exception.py:158 +#, python-format +msgid "Image %(image_id)s is unacceptable: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:164 +#, python-format +msgid "%(err)s" +msgstr "" + +#: ironic/common/exception.py:168 +msgid "Resource could not be found." +msgstr "" + +#: ironic/common/exception.py:173 +#, python-format +msgid "Failed to load driver %(driver_name)s." +msgstr "" + +#: ironic/common/exception.py:177 +#, python-format +msgid "Image %(image_id)s could not be found." +msgstr "" + +#: ironic/common/exception.py:181 +#, python-format +msgid "No valid host was found. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:185 +#, python-format +msgid "Instance %(instance)s could not be found." +msgstr "" + +#: ironic/common/exception.py:189 +#, python-format +msgid "Node %(node)s could not be found." +msgstr "" + +#: ironic/common/exception.py:193 +#, python-format +msgid "Node %(node)s is associated with instance %(instance)s." +msgstr "" + +#: ironic/common/exception.py:197 +#, python-format +msgid "Port %(port)s could not be found." +msgstr "" + +#: ironic/common/exception.py:201 +#, python-format +msgid "Update DHCP options on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "" + +#: ironic/common/exception.py:213 +#, python-format +msgid "Conductor %(conductor)s could not be found." +msgstr "" + +#: ironic/common/exception.py:217 +#, python-format +msgid "Conductor %(conductor)s already registered." +msgstr "" + +#: ironic/common/exception.py:221 +#, python-format +msgid "Failed to set node power state to %(pstate)s." +msgstr "" + +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." +msgstr "" + +#: ironic/common/exception.py:230 +#, python-format +msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 +#, python-format +msgid "" +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." +msgstr "" + +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 +#, python-format +msgid "IPMI call failed: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:258 +#, python-format +msgid "Failed to establish SSH connection to host %(host)s." +msgstr "" + +#: ironic/common/exception.py:262 +#, python-format +msgid "Failed to execute command via SSH: %(cmd)s." +msgstr "" + +#: ironic/common/exception.py:266 +#, python-format +msgid "Unsupported object type %(objtype)s" +msgstr "" + +#: ironic/common/exception.py:270 +#, python-format +msgid "Cannot call %(method)s on orphaned %(objtype)s object" +msgstr "" + +#: ironic/common/exception.py:274 +#, python-format +msgid "Driver %(driver)s does not support %(extension)s." +msgstr "" + +#: ironic/common/exception.py:278 +#, python-format +msgid "Version %(objver)s of %(objname)s is not supported" +msgstr "" + +#: ironic/common/exception.py:282 +#, python-format +msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:287 +#, python-format +msgid "Not authorized for image %(image_id)s." +msgstr "" + +#: ironic/common/exception.py:291 +#, python-format +msgid "Invalid image href %(image_href)s." +msgstr "" + +#: ironic/common/exception.py:295 +msgid "Unauthorised for keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:303 +#, python-format +msgid "" +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." +msgstr "" + +#: ironic/common/exception.py:308 +msgid "Connection failed" +msgstr "" + +#: ironic/common/exception.py:312 +msgid "Requested OpenStack Images API is forbidden" +msgstr "" + +#: ironic/common/exception.py:320 +msgid "The provided endpoint is invalid" +msgstr "" + +#: ironic/common/exception.py:324 +msgid "Unable to communicate with the server." +msgstr "" + +#: ironic/common/exception.py:340 +#, python-format +msgid "Could not find config at %(path)s" +msgstr "" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "" + +#: ironic/common/images.py:209 +#, python-format +msgid "fmt=%(fmt)s backed by: %(backing_file)s" +msgstr "" + +#: ironic/common/images.py:215 +#, python-format +msgid "%(image)s was %(format)s, converting to raw" +msgstr "" + +#: ironic/common/images.py:224 +#, python-format +msgid "Converted to raw, but format is now %s" +msgstr "" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 +#, python-format +msgid "Could not perform authorization process for service catalog: %s" +msgstr "" + +#: ironic/common/keystone.py:58 +msgid "No keystone service catalog loaded" +msgstr "" + +#: ironic/common/neutron.py:91 +#, python-format +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." +msgstr "" + +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." +msgstr "" + +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 +#, python-format +msgid "Execution completed, command line is \"%s\"" +msgstr "" + +#: ironic/common/utils.py:66 +#, python-format +msgid "Command stdout is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:67 +#, python-format +msgid "Command stderr is: \"%s\"" +msgstr "" + +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 +#, python-format +msgid "SSH connect failed: %s" +msgstr "" + +#: ironic/common/utils.py:145 +#, python-format +msgid "Invalid backend: %s" +msgstr "" + +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ironic/common/utils.py:411 +#, python-format +msgid "Could not remove tmpdir: %s" +msgstr "" + +#: ironic/common/utils.py:446 +#, python-format +msgid "Failed to unlink %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:455 +#, python-format +msgid "Failed to remove dir %(path)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:471 +#, python-format +msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" +msgstr "" + +#: ironic/common/utils.py:485 +#, python-format +msgid "" +"Failed to remove trailing character. Returning original object. Supplied " +"object is not a string: %s," +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:125 +#, python-format +msgid "" +"Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " +"%(extra)s." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:161 +msgid "Getting a full list of images metadata from glance." +msgstr "" + +#: ironic/common/glance_service/base_image_service.py:182 +#, python-format +msgid "Getting image metadata from glance. Image: %s" +msgstr "" + +#: ironic/conductor/manager.py:144 +#, python-format +msgid "" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" +msgstr "" + +#: ironic/conductor/manager.py:165 +#, python-format +msgid "Received notification: %r" +msgstr "" + +#: ironic/conductor/manager.py:188 +#, python-format +msgid "RPC update_node called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:192 +msgid "Invalid method call: update_node can not change node state." +msgstr "" + +#: ironic/conductor/manager.py:233 +#, python-format +msgid "" +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." +msgstr "" + +#: ironic/conductor/manager.py:272 +#, python-format +msgid "RPC vendor_passthru called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:318 +#, python-format +msgid "RPC do_node_deploy called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:324 +#, python-format +msgid "" +"RPC do_node_deploy called for %(node)s, but provision state is already " +"%(state)s." +msgstr "" + +#: ironic/conductor/manager.py:330 +msgid "provisioning" +msgstr "" + +#: ironic/conductor/manager.py:336 +#, python-format +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:363 +#, python-format +msgid "Failed to deploy. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:393 +#, python-format +msgid "RPC do_node_tear_down called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:402 +#, python-format +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgstr "" + +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 +#, python-format +msgid "Failed to tear down. Error: %s" +msgstr "" + +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was already locked by another " +"process. Skip." +msgstr "" + +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 +#, python-format +msgid "RPC validate_driver_interfaces called for node %s." +msgstr "" + +#: ironic/conductor/manager.py:670 +msgid "not supported" +msgstr "" + +#: ironic/conductor/manager.py:689 +#, python-format +msgid "" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" +msgstr "" + +#: ironic/conductor/manager.py:699 +msgid "The node is already in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:700 +msgid "The node is not in maintenance mode" +msgstr "" + +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 +msgid "Multi-node TaskManager has no attribute 'node'" +msgstr "" + +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 +msgid "Multi-node TaskManager has no attribute 'driver'" +msgstr "" + +#: ironic/conductor/task_manager.py:226 +msgid "Multi-node TaskManager can't select single node manager from the list" +msgstr "" + +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 +#, python-format +msgid "Failed to change power state to '%(target)s'. Error: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:90 +#, python-format +msgid "" +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." +msgstr "" + +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" +msgstr "" + +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." +msgstr "" + +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." +msgstr "" + +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:205 +#, python-format +msgid "Parent device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:210 +#, python-format +msgid "Root device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:213 +#, python-format +msgid "Swap device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 +msgid "Failed to detect root device UUID." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 +#, python-format +msgid "Deploy to address %s failed." +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:268 +#, python-format +msgid "Command: %s" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:269 +#, python-format +msgid "StdOut: %r" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:270 +#, python-format +msgid "StdErr: %r" +msgstr "" + +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 +#, python-format +msgid "set_power_state called with an invalid power state: %s." +msgstr "" + +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." +msgstr "" + +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:59 +#, python-format +msgid "The following IPMI credentials are not supplied to IPMI driver: %s." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:80 +#, python-format +msgid "" +"IPMI power on failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:110 +#, python-format +msgid "" +"IPMI power off failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:142 +#, python-format +msgid "" +"IPMI power reboot failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:177 +#, python-format +msgid "" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:191 +#, python-format +msgid "" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 +#, python-format +msgid "Invalid boot device %s specified." +msgstr "" + +#: ironic/drivers/modules/ipminative.py:293 +#, python-format +msgid "" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 +msgid "IPMI address not supplied to IPMI driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:186 +#, python-format +msgid "IPMI power %(state)s failed for node %(node)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:197 +#, python-format +msgid "IPMI power %(state)s timed out after %(tries)s retries." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:249 +#, python-format +msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 +#, python-format +msgid "set_power_state called with invalid power state %s." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:363 +#, python-format +msgid "Fetching kernel and ramdisk for node %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:393 +#, python-format +msgid "Fetching image %(ami)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 +msgid "Deploy key is not match" +msgstr "" + +#: ironic/drivers/modules/pxe.py:687 +#, python-format +msgid "Parameters %s were not passed to ironic for deploy." +msgstr "" + +#: ironic/drivers/modules/pxe.py:701 +#, python-format +msgid "Unsupported method (%s) passed to PXE driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:722 +#, python-format +msgid "" +"Node %s failed to power off while handling deploy failure. This may be a " +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 +#, python-format +msgid "Error returned from PXE deploy ramdisk: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:748 +msgid "Failure in PXE deploy ramdisk." +msgstr "" + +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "Continuing deployment for node %(node)s, params %(params)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 +msgid "PXE driver failed to continue deployment." +msgstr "" + +#: ironic/drivers/modules/pxe.py:762 +#, python-format +msgid "Deployment to node %s done" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 +#, python-format +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:262 +#, python-format +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:179 +#, python-format +msgid "Attempting to grab file lock \"%(lock)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:189 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:207 +#, python-format +msgid "Got file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:211 +#, python-format +msgid "Released file lock \"%(lock)s\" at %(path)s" +msgstr "" + +#: ironic/openstack/common/lockutils.py:249 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/lockutils.py:253 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ironic/openstack/common/log.py:303 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ironic/openstack/common/log.py:402 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ironic/openstack/common/log.py:453 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ironic/openstack/common/log.py:623 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:84 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:91 +msgid "in fixed duration looping call" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:131 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ironic/openstack/common/loopingcall.py:138 +msgid "in dynamic looping call" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:43 +#, python-format +msgid "Unexpected argument for periodic task creation: %(arg)s." +msgstr "" + +#: ironic/openstack/common/periodic_task.py:134 +#, python-format +msgid "Skipping periodic task %(task)s because its interval is negative" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:139 +#, python-format +msgid "Skipping periodic task %(task)s because it is disabled" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:177 +#, python-format +msgid "Running periodic task %(full_task_name)s" +msgstr "" + +#: ironic/openstack/common/periodic_task.py:186 +#, python-format +msgid "Error during %(full_task_name)s: %(e)s" +msgstr "" + +#: ironic/openstack/common/policy.py:395 +#, python-format +msgid "Failed to understand rule %(rule)s" +msgstr "" + +#: ironic/openstack/common/policy.py:405 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ironic/openstack/common/policy.py:680 +#, python-format +msgid "Failed to understand rule %(rule)r" +msgstr "" + +#: ironic/openstack/common/processutils.py:127 +#, python-format +msgid "Got unknown keyword args to utils.execute: %r" +msgstr "" + +#: ironic/openstack/common/processutils.py:142 +#, python-format +msgid "Running cmd (subprocess): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:167 +#: ironic/openstack/common/processutils.py:240 +#, python-format +msgid "Result was %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:179 +#, python-format +msgid "%r failed. Retrying." +msgstr "" + +#: ironic/openstack/common/processutils.py:219 +#, python-format +msgid "Running cmd (SSH): %s" +msgstr "" + +#: ironic/openstack/common/processutils.py:221 +msgid "Environment not supported over SSH" +msgstr "" + +#: ironic/openstack/common/processutils.py:225 +msgid "process_input not supported over SSH" +msgstr "" + +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ironic/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ironic/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ironic/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ironic/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ironic/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ironic/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ironic/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ironic/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ironic/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ironic/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ironic/openstack/common/sslutils.py:52 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:55 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:58 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ironic/openstack/common/sslutils.py:61 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ironic/openstack/common/sslutils.py:100 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:88 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ironic/openstack/common/strutils.py:184 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ironic/openstack/common/strutils.py:191 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ironic/openstack/common/db/exception.py:44 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:60 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" + +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 +msgid "Unsupported id columns type" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ironic/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ironic/openstack/common/notifier/rpc_notifier.py:45 +#: ironic/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ironic/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ironic/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ironic/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 +#, python-format +msgid "Failed to migrate to version %(version)s on engine %(engine)s" +msgstr "" diff -Nru ironic-2014.1~b3/ironic/locale/tl/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/tl/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/tl/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/tl/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Filipino (Philippines) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Tagalog " -"(http://www.transifex.com/projects/p/openstack/language/tl/)\n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"Language-Team: Tagalog (http://www.transifex.com/projects/p/openstack/language/tl/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: tl\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Node %s can't be deleted because it's not powered off" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:763 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "natanggap %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "walang paraan para sa mensahe: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Walang paraan para sa mensahe: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/tl_PH/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/tl_PH/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/tl_PH/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/tl_PH/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" +"POT-Creation-Date: 2014-03-28 06:06+0000\n" "PO-Revision-Date: 2013-11-12 16:15+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Tagalog (Philippines) " @@ -18,82 +18,71 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:169 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %s is already being provisioned." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:174 -#, python-format -msgid "Node %(node)s is already in the '%(state)s' state." -msgstr "" - -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format msgid "Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,735 +93,958 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 +#: ironic/common/exception.py:225 msgid "An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" "Can not change instance association while node %(node)s is in power state" " %(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" "Cannot complete the requested action because chassis %(chassis)s contains" " nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" "Service type %(service_type)s with endpoint type %(endpoint_type)s not " "found in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor " +"workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" "A conductor with hostname %(hostname)s was previously registered. " "Updating registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" "RPC change_node_power_state called for node %(node)s. The desired new " "state is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node " +"state %(actual)s does not match expected state '%(state)s'. Updating DB " +"state to '%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" "During sync_power_state, could not get power state for node %(node)s. " "Error: %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected " +"state '%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" "During sync_power_state, node %(node)s was not found and presumed deleted" " by another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" "RPC change_node_maintenance_mode called for node %(node)s with " "maintanence mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC update_port called for port %s." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:879 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" "Not going to change_node_power_state because current state = requested " "state = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while " +"aborting. More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" "IPMI get power state failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" "IPMI get power state for node %(node_id)s returns the following details:" " %(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" "IPMI set boot device failed for node %(node_id)s with the following " "error: %(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one " +"of %(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:432 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" "Can not validate PXE bootloader. The following parameters were not passed" " to ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 +#, python-format +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason:" +" %(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:129 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:156 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:357 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:387 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:485 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP " +"BOOT options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:504 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:508 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node" +" %(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:543 ironic/drivers/modules/ssh.py:377 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:554 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration " +"file or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:664 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:681 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:695 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:716 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " @@ -840,87 +1052,283 @@ "maintenance mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:728 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:740 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:742 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:745 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:751 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:754 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:756 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:111 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:136 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:159 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:175 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:182 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:187 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:196 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:229 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:260 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:265 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:278 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:382 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after " +"%(retries)d retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node " +"%(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1352,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1375,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1537,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1640,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1731,431 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" "Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" " \"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" "Specified RPC envelope version, %(version)s, not supported by this " "endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/tr_TR/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/tr_TR/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/tr_TR/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/tr_TR/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Turkish (Turkey) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Turkish (Turkey) " -"(http://www.transifex.com/projects/p/openstack/language/tr_TR/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/openstack/language/tr_TR/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Bilinmeyen bir istisna oluştu." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Yetkiniz yok." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Kabul edilemez parametreler var." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "%(image_id)s imajı kabul edilemez: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "Hatalar: %(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Kaynak bulunamadı." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "%(image_id)s imaj kaynak dosyası bulunamadı." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "Geçersiz %(image_href)s imaj kaynak dosyası." -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "%(path)s'deki yapılandırma bulunamadı" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "Geçersiz backend: %s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No console action was triggered because the console is already %s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "VCPU ayarlanamadı, CPU koleksiyonunun bozulduğu varsayılıyor" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1020,7 +1463,7 @@ #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog servisi bunlardan biri olmak zorundadır: %s" #: ironic/openstack/common/log.py:623 #, python-format @@ -1063,12 +1506,12 @@ #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "%(full_task_name)s periyodik görevi çalışıyor" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "%(full_task_name)s sırasında hata: %(e)s" #: ironic/openstack/common/policy.py:395 #, python-format @@ -1088,95 +1531,95 @@ #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "utils.execute için bilinmeyen anahtar kelime argümanları: %r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "Çalışan komut(alt süreç): %s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "Sonuç %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r hatalı. Yeniden deneniyor." #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "Çalışan komut(SSH): %s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "SSH üzerinde ortam desteklenmemektedir." #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "SSH üzerinde process_input desteklenmemektedir." -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "%s yakalandı, çıkılıyor" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "Yakalanmamış istisna" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1184,17 +1627,17 @@ #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "cert_file bulunamadı: %s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "ca_file bulunamadı: %s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "key_file bulunamadı: %s" #: ironic/openstack/common/sslutils.py:61 msgid "" @@ -1205,7 +1648,7 @@ #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "Geçersiz SSL sürümü: %s" #: ironic/openstack/common/strutils.py:88 #, python-format @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "Sürüm tam sayı olmak zorunda" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "Tanınmayan silinmiş okuma değeri '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "alınan %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "%s mesajı için yöntem bulunamadı" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "%s mesajı için yöntem bulunamadı." -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "Geçersi RPC bağlantısı kullanımı." -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "Mesaj işleme başarısız ... atlanıyor." + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "Mesaj işleme başarısız ... yeniden kuyruğa alınacak." -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "AMQP kuyrukları tekrar kuruluyor" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "Cevap gönderiliyor" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC Mesajı Geçersiz." -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "%s servisi için tüketici bağlantısı oluşturuluyor." -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/uk/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/uk/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/uk/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/uk/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,100 +1,91 @@ -# Ukrainian translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: +# romcheg , 2013 +# romcheg , 2013 msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Ukrainian " -"(http://www.transifex.com/projects/p/openstack/language/uk/)\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" +"Language-Team: Ukrainian (http://www.transifex.com/projects/p/openstack/language/uk/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: uk\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" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" -msgstr "" +msgstr "Метод не вказано." -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." -msgstr "" +msgstr "Ідентифікатор шасі не вказано." -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -105,823 +96,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Не авторизовано." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." -msgstr "" +msgstr "Операцію не дозволено." -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Ресурс не знайдено." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." -msgstr "" +msgstr "Не вдалось завантажити драйвер %(driver_name)s." -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "Образ %(image_id)s не знайдено." -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." -msgstr "" +msgstr "Порт %(port)s не знайдено." -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 #, python-format -msgid "Chassis %(chassis)s could not be found." +msgid "Update MAC address on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:209 +#, python-format +msgid "Chassis %(chassis)s could not be found." +msgstr "Шасі %(chassis)s не знайдено." + +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" -msgstr "" +msgstr "Помилка при підключенні" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "Не вдалось видалити тимчасову директорію: %s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "RPC get_console_information called for node %s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:798 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -945,7 +1379,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -968,6 +1402,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1120,64 +1564,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1223,56 +1667,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "версія повинна бути цілим числом" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1299,583 +1758,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID: %s." -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "отримано %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "без порядку для повідомлень: %s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "Без порядку для повідомлень: %s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/ur/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/ur/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/ur/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/ur/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Urdu translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Urdu (http://www.transifex.com/projects/p/openstack/language/ur/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/vi_VN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/vi_VN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/vi_VN/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/vi_VN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Vietnamese (Vietnam) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/openstack/language/vi_VN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "Xảy ra lỗi chưa xác định thuộc về hệ thống ." -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "Lỗi exception trong tiến trình định dạng chuỗi" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "Chưa được xác nhận." -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "Không chấp nhận các tham số." -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "Không chấp nhận hình ảnh %(image_id)s vì: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "Không tìm thấy nguồn tài nguyên." -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "Không xác nhận cho hình ảnh %(image_id)s." -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:506 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." +msgstr "" + +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." +msgstr "" + +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:124 +#, python-format +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "Thông số không hợp lệ: Unicode hiện chưa được hỗ trợ bởi hệ cơ sở dữ liệu hiện tại." -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/zh_CN/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/zh_CN/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/zh_CN/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/zh_CN/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Chinese (Simplified, China) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Chinese (China) " -"(http://www.transifex.com/projects/p/openstack/language/zh_CN/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/openstack/language/zh_CN/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -102,1779 +92,2094 @@ #: ironic/api/middleware/parsable_error.py:80 #, python-format msgid "Error parsing HTTP response: %s" -msgstr "" +msgstr "解析HTTP响应失败: %s" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" -msgstr "" +msgstr "配置" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "发生未知异常。" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "字符串格式操作中发生异常" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "未授权。" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "无法接受的参数。" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "期望 uuid,但是接收到 %(uuid)s。" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "镜像 %(image_id)s 无法接受,原因是: %(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "资源没有找到。" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "镜像 %(image_id)s 没有找到。" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 +#, python-format +msgid "" +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." +msgstr "" + +#: ironic/common/exception.py:244 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:249 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" -msgstr "" +msgstr "不支持的对象类型 %(objtype)s" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" -msgstr "" +msgstr "对于孤立对象 %(objtype)s 无法调用 %(method)s" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" -msgstr "" +msgstr "%(objname)s 的版本 %(objver)s 不被支持" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "连接 Glance 主机 %(host)s:%(port)s 失败:%(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "未针对映像 %(image_id)s 授权。" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "无效的镜像href %(image_href)s。" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "在 %(path)s 找不到配置文件。" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "遇到快照列表,但是找不到任何标题!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "'qemu-img info'解析失败" + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt=%(fmt)s 由 %(backing_file)s 支持" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "转化为裸格式,但目前格式是 %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "无效的后台:%s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "正在重新装入所缓存文件 %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "未能除去临时目录:%s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "未能取消链接 %(path)s,发生错误:%(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "未能除去目录 %(path)s,发生错误:%(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "未能创建从 %(source)s 到 %(link)s 的符号链接,发生错误:%(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "针对“%(method)s”与 Glance 服务器“%(host)s:%(port)s”联系时出错,%(extra)s。" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "禁用" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool 标准输出:“%(out)s”,标准错误:“%(err)s”" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "正在针对部署 %s 构建 PXE 配置。" + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" -msgstr "" - -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" -msgstr "" - -#: ironic/objects/base.py:145 -msgid "Invalid version string" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:200 -#, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:301 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Cannot load '%(attrname)s' in the base class" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/seamicro.py:488 #, python-format -msgid "An object of class %s is required here" +msgid "set_boot_device error: %s" msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "Original exception being dropped: %s" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:93 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/lockutils.py:105 -#, python-format -msgid "Could not release the acquired lock `%s`" +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "未设置 VCPUs;假设 CPU 集合损坏了" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 没有 %(requested_disk)s MB 可用磁盘,它仅具有 %(usable_disk_mb)s MB 可用磁盘。" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 没有 %(requested_ram)s MB 可用 ram,它仅具有 %(usable_ram)s MB 可用 ram。" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "正在删除原始异常:%s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "意外的异常已发生 %d 次...正在重试。" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "消息对象不支持附加。" + +#: ironic/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 "消息对象不支持str(),因为其中可能包含非ASCII字符。请使用unicode()或translate()代替。" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "未能释放所获取锁定“%s”" + #: ironic/openstack/common/lockutils.py:170 #, python-format msgid "Got semaphore \"%(lock)s\"" -msgstr "" +msgstr "已获取信号量 \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:179 #, python-format msgid "Attempting to grab file lock \"%(lock)s\"" -msgstr "" +msgstr "正在尝试抓取文件锁 \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:189 #, python-format msgid "Created lock path: %s" -msgstr "" +msgstr "已创建锁路径:%s" #: ironic/openstack/common/lockutils.py:207 #, python-format msgid "Got file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "已在 %(path)s 处取得文件锁 \"%(lock)s\" " #: ironic/openstack/common/lockutils.py:211 #, python-format msgid "Released file lock \"%(lock)s\" at %(path)s" -msgstr "" +msgstr "已在 %(path)s 处释放文件锁 \"%(lock)s\"" #: ironic/openstack/common/lockutils.py:249 #, python-format msgid "Got semaphore / lock \"%(function)s\"" -msgstr "" +msgstr "已获取信号量 / 锁 \"%(function)s\"" #: ironic/openstack/common/lockutils.py:253 #, python-format msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" +msgstr "已释放信号量 / 锁 \"%(function)s\"" #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "建议不要使用:%s" #: ironic/openstack/common/log.py:402 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" -msgstr "" +msgstr "加载登陆配置出错 %(log_config)s:%(err_msg)s" #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "syslog设备必须作为一个 %s 。" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "对建议不要使用的配置进行了后果极严重的调用:%(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "任务的运行时间超过时间间隔(超过 %s 秒)" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "在固定时段内循环调用" #: ironic/openstack/common/loopingcall.py:131 #, python-format msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" +msgstr "动态循环调用%.02f 秒休眠" #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "在动态循环调用中" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "对于周期性任务创建,以下是意外自变量:%(arg)s。" #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "正在跳过周期性任务 %(task)s,因为其时间间隔为负" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "正在跳过周期性任务 %(task)s,因为它已禁用" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "正在运行周期性任务 %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "在 %(full_task_name)s 期间发生的错误:%(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "未能理解规则 %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "对于类型为 %s 的匹配项,不存在任何处理程序" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "未能理解规则 %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "发现未知的 utils.execute 关键字参数:%r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "正在运行cmd (subprocess):%s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "运行结果为 %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r 失败,重试。" #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "运行cmd (SSH):%s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "SSH上不支持环境变量" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "SSH上不支持的进程输入参数。" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "存在以下完整的一组配置:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "捕获到 %s,正在退出" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." -msgstr "" +msgstr "在RPC清除期间发生异常。" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "父进程已意外终止,正在退出" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "存在未处理的异常" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "派生速度太快,正在休眠" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "已启动子代 %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "正在启动 %d 工作程序" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "信号 %(sig)d 已终止子代 %(pid)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "子代 %(pid)s 已退出,状态为 %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "pid %d 没有在子代列表中" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "捕获到 %s,正在停止子代" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "正在等待 %d 个子代退出" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "找不到 cert_file:%s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "找不到 ca_file:%s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "找不到 key_file:%s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "以 SSL 方式运行服务器时,必须在配置文件中同时指定 cert_file 和 key_file 选项值" #: ironic/openstack/common/sslutils.py:100 #, python-format msgid "Invalid SSL version : %s" -msgstr "" +msgstr "SSL版本无效:%s" #: ironic/openstack/common/strutils.py:88 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" +msgstr "不可识别的值 '%(val)s', 可接受的值是: %(acceptable)s" #: ironic/openstack/common/strutils.py:184 #, python-format msgid "Invalid string format: %s" -msgstr "" +msgstr "字符串格式无效: %s" #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "字节乘数未知:%s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "参数无效:当前数据库不支持 Unicode。" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "version应该是整数" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" -msgstr "" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "表 \"%s\" 包含非utf8核对, 请确保所有表是 CHARSET=utf8" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." -msgstr "" +#: ironic/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 "数据库不受版本控制,但是包含表格。请手动标记schema的当前版本。" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "提供的排序键无效。" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "排序方向未知,必须为“降序”或“升序”" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "无法识别的 read_deleted 取值”%s“" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "请在 col_name_col_instance 参数中指定列 %s。要求执行此操作的原因是列中包含不受 sqlite 支持的类型)。" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "对于列 %s,col_name_col_instance 参数具有不正确类型的列实例。它应该是 sqlalchemy.Column 的实例。" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" -msgstr "" +msgstr "不支持的id列类型" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s 不在有效的优先级" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "Problem '%(e)s' 试图发送到通知系统。Payload=%(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "未能装入通知器 %s。将不发送这些通知。" #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "未能将通知发送到 %(topic)s。Payload=%(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" -msgstr "" +msgstr "池正在创建新连接" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" -msgstr "" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "没有任何调用线程正在等待 msg_id : %(msg_id)s, 消息 : %(data)s" + +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "_call_waiters: %s" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." -msgstr "" +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." +msgstr "调用等待的线程的数目大于警告阈值:%d。可能存在 MulticallProxyWaiter 泄漏。" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "未打包的上下文:%s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID 为 %s。" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "已接收 %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "没有适用于消息的方法:%s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "没有适用于消息的方法:%s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "在消息处理 (%s) 期间发生预期的异常" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "消息处理期间发生异常" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "正在对 %s 进行同步调用..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "消息ID(MSG_ID)是 %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "在 %s 做异步cast" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "做异步fanout cast" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "正在发送关于 %(topic)s 的 %(event_type)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "发生与 RPC 相关的未知异常。" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "远程错误:%(exc_type)s %(value)s\n%(traceback)s。" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" -msgstr "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" +msgstr "当等待在RPC响应超时-- 主题: \"%(topic)s\", RPC 方法: \"%(method)s\" info:\"%(info)s\"" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "<未知>" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "找到重复消息 (%(msg_id)s)。正在跳过该消息。" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "无效的RPC连接重用。" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "指定的 RPC 版本 %(version)s 不受此端点支持。" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "指定的 RPC 包络版本 %(version)s 不受此端点支持。" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" +msgstr "指定的RPC版本限定, %(version_cap)s, 过慢" -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" -msgstr "" +msgstr "返回 %s 异常给调用者" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." -msgstr "" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "未能处理消息...正在跳过该消息。" + +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "未能处理消息...将重新排队。" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "正在重新连接位于 %(hostname)s:%(port)d 的AMQP服务器" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "连接到位于 %(hostname)s:%(port)d 的AMQP服务器" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "无法连接到位于%(hostname)s:%(port)d的AMQP server,尝试已经 %(max_retries)d 次:%(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "位于%(hostname)s:%(port)d的AMQP服务器不可达:%(err_str)s。%(sleep_time)d 秒钟后请再尝试。" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "为topic '%(topic)s'声明消费者失败:%(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "等待RPC响应超时:%s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "从队列中消费消息失败:%s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "给topic '%(topic)s'发布消息失败:%(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "qpid_topology_version的值无效: %d" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "未能处理消息... 正在跳过该消息。" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "无法连接至 AMQP 服务器:%(e)s。正在休眠,持续时间为 %(delay)s 秒" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "连接到 %s 的AMQP服务器" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "重建AMQP队列" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "处理消息时出错。正在跳过该消息。" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON 序列化失败。" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "正在反序列化:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "正在连接至具有 %(type)s 的 %(addr)s" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> 已预订 %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> 请绑定:%(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "未能打开套接字。" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "正在预订 %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "无法在此套接字上执行“恢复”操作。" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "无法在此套接字上执行“发送”操作。" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "正在运行具有上下文的函数:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "正在发送应答" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC 消息未包括方法。" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "正在注册反应器" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" +msgstr "已注册内部反应器" -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" +msgstr "正在使用套接字" -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "正在为主题创建代理:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" +msgstr "主题包含了危险字符。" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "主题套接字文件创建失败。" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "对于主题 %(topic)s,本地“每主题”储备缓冲区已满。正在删除消息。" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" +msgid "Required IPC directory does not exist at %s" +msgstr "在%s不存在需要的IPC目录" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" -msgstr "" +msgid "Permission denied to IPC directory at %s" +msgstr "在 %s 的IPC目录的权限被拒绝" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "未能创建 ZeroMQ 接收器守护程序。套接字可能已在使用中。" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" +msgstr "使用者接收到数据:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ 包络版本不受支持或未知。" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "正在跳过主题注册。已注册。" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "使用者是 zmq。%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "正在创建有效内容" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "正在为应答等待线程创建队列套接字" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "正在发送传播内容" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "已发送传播内容;正在等待应答" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "接收到消息:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "正在对响应进行解包" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "返回了不受支持或未知的 ZMQ 包络。" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC 消息无效。" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "正在将消息发送至:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "不存在任何 MatchMaker 结果。未在进行传播。" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "不存在任何来自 MatchMaker 的匹配项。" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" -msgstr "" +msgstr "rpc_zmq_matchmaker = %(orig)s已被弃用; 请使用 %(new)s 作为替代" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "MatchMaker 找不到匹配项。" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "MatchMaker 没有实现注册或脉动信号。" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "Matchmaker已注销: %(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "请在启动脉动信号之前进行注册。" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "对于主题“%s”,不存在任何对主机进行定义的键,请参阅环文件" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" +msgstr "为服务 %s 创建消费者" -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/zh_HK/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/zh_HK/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/zh_HK/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/zh_HK/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Chinese (Traditional, Hong Kong SAR China) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:09+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" +"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/openstack/language/zh_HK/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: zh_HK\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 -#, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." -msgstr "" - -#: ironic/api/controllers/v1/node.py:584 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Node %s can not be updated while a state transitionis in progress." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,823 +94,1266 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." msgstr "" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" msgstr "" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." msgstr "" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." msgstr "" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." msgstr "" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" msgstr "" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" msgstr "" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." msgstr "" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." msgstr "" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" msgstr "" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." msgstr "" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." msgstr "" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" msgstr "" -#: ironic/common/images.py:112 +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." +msgstr "" + +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." +msgstr "" + +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." +msgstr "" + +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 msgid "Snapshot list encountered but no header found!" msgstr "" -#: ironic/common/images.py:205 +#: ironic/common/images.py:203 msgid "'qemu-img info' parsing failed." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" +msgstr "" + +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." +msgstr "" + +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" msgstr "" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" msgstr "" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" msgstr "" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:215 +#: ironic/conductor/manager.py:272 #, python-format -msgid "RPC validate_vendor_action called for node %s." +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:230 -#, python-format -msgid "Failed to validate vendor info. Error: %s" -msgstr "" - -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:493 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:522 +#, python-format +msgid "" +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" +msgstr "" + +#: ironic/conductor/manager.py:572 +#, python-format +msgid "" +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." +msgstr "" + +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/manager.py:867 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 +#, python-format +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/rpcapi.py:97 +#, python-format +msgid "No conductor service registered which supports driver %s." +msgstr "" + +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." -msgstr "" - -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" +msgstr "" + +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 +#, python-format +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:136 #, python-format msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 +#, python-format +msgid "" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:118 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "'%s' is not an integer value." +msgstr "" + +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:162 #, python-format msgid "Building PXE config for deployment %s." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." +msgstr "" + +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:184 +#, python-format +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:223 +#, python-format +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" +msgid "Reboot failed for node %s." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:394 +#, python-format +msgid "Unsupported method (%s) passed to SeaMicro driver." +msgstr "" + +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 +#, python-format +msgid "SeaMicro client exception: %s" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/drivers/modules/ssh.py:151 +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" +msgstr "" + +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:115 +#, python-format +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " +msgstr "" + +#: ironic/drivers/modules/ssh.py:140 +#, python-format +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +msgstr "" + +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" +msgstr "" + +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:186 msgid "SSHPowerDriver requires both address and username be set." msgstr "" -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/ssh.py:200 #, python-format msgid "SSH key file %s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/ssh.py:233 #, python-format msgid "Node \"%(host)s\" with MAC address %(mac)s not found." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/ssh.py:264 #, python-format msgid "Retrieved Node List: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:230 +#: ironic/drivers/modules/ssh.py:269 #, python-format msgid "Checking Node: %s's Mac address." msgstr "" -#: ironic/drivers/modules/ssh.py:243 +#: ironic/drivers/modules/ssh.py:282 #, python-format msgid "Found Mac address: %s" msgstr "" -#: ironic/drivers/modules/ssh.py:343 +#: ironic/drivers/modules/ssh.py:386 #, python-format msgid "SSH connection cannot be established: %s" msgstr "" +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 "" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 "" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + #: ironic/objects/base.py:54 #, python-format msgid "Error setting %(attr)s" @@ -944,7 +1377,7 @@ msgid "Cannot save anything in the base class" msgstr "" -#: ironic/objects/conductor.py:55 +#: ironic/objects/conductor.py:54 msgid "Cannot update a conductor record directly." msgstr "" @@ -967,6 +1400,16 @@ msgid "Unexpected exception occurred %d time(s)... retrying." msgstr "" +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + #: ironic/openstack/common/lockutils.py:105 #, python-format msgid "Could not release the acquired lock `%s`" @@ -1119,64 +1562,64 @@ msgid "process_input not supported over SSH" msgstr "" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" msgstr "" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" msgstr "" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" msgstr "" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" msgstr "" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" msgstr "" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" msgstr "" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" msgstr "" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" msgstr "" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" msgstr "" @@ -1222,56 +1665,71 @@ msgid "Unknown byte multiplier: %s" msgstr "" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "" - #: ironic/openstack/common/db/sqlalchemy/utils.py:121 msgid "Unknown sort direction, must be 'desc' or 'asc'" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/openstack/common/db/sqlalchemy/utils.py:164 #, python-format msgid "" -"Please specify column %s in col_name_col_instance param. It is required " -"because column has unsupported type by sqlite)." +"There is no `deleted` column in `%s` table. Project doesn't use soft-deleted" +" feature." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." +msgstr "" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/openstack/common/db/sqlalchemy/utils.py:284 #, python-format msgid "" -"col_name_col_instance param has wrong type of column instance for column " -"%s It should be instance of sqlalchemy.Column." +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 +#: ironic/openstack/common/db/sqlalchemy/utils.py:290 #, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgid "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" @@ -1298,583 +1756,430 @@ msgid "Could not send notification to %(topic)s. Payload=%(message)s" msgstr "" -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" - #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:202 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" msgstr "" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." msgstr "" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" msgstr "" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." msgstr "" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." msgstr "" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." +"Specified RPC envelope version, %(version)s, not supported by this endpoint." msgstr "" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 +#: ironic/openstack/common/rpc/common.py:292 #, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" +msgid "Returning exception %s to caller" msgstr "" -#: ironic/openstack/common/rpc/common.py:307 -#, python-format -msgid "Returning exception %s to caller" +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." msgstr "" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" msgstr "" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/locale/zh_TW/LC_MESSAGES/ironic.po ironic-2014.1~rc1/ironic/locale/zh_TW/LC_MESSAGES/ironic.po --- ironic-2014.1~b3/ironic/locale/zh_TW/LC_MESSAGES/ironic.po 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/locale/zh_TW/LC_MESSAGES/ironic.po 2014-04-01 19:49:34.000000000 +0000 @@ -1,99 +1,89 @@ -# Chinese (Traditional, Taiwan) translations for ironic. -# Copyright (C) 2013 ORGANIZATION +# Translations template for ironic. +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the ironic project. -# +# # Translators: msgid "" msgstr "" -"Project-Id-Version: Ironic\n" +"Project-Id-Version: Ironic\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-04 06:05+0000\n" -"PO-Revision-Date: 2013-11-12 16:15+0000\n" +"POT-Creation-Date: 2014-03-31 20:53+0000\n" +"PO-Revision-Date: 2014-03-31 18:25+0000\n" "Last-Translator: openstackjenkins \n" -"Language-Team: Chinese (Taiwan) " -"(http://www.transifex.com/projects/p/openstack/language/zh_TW/)\n" -"Plural-Forms: nplurals=1; plural=0\n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/openstack/language/zh_TW/)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ironic/api/controllers/v1/chassis.py:218 -#: ironic/api/controllers/v1/node.py:593 ironic/api/controllers/v1/port.py:281 +#: ironic/api/controllers/v1/node.py:202 #, python-format -msgid "Patching Error: %s" -msgstr "" - -#: ironic/api/controllers/v1/node.py:122 -#, python-format -msgid "Power operation for node %s is already in progress." -msgstr "" - -#: ironic/api/controllers/v1/node.py:169 -#, python-format -msgid "Node %s is already being provisioned." +msgid "Node %(node)s is already in the '%(state)s' state." msgstr "" -#: ironic/api/controllers/v1/node.py:174 +#: ironic/api/controllers/v1/node.py:215 #, python-format -msgid "Node %(node)s is already in the '%(state)s' state." +msgid "Node %s is already being provisioned or decommissioned." msgstr "" -#: ironic/api/controllers/v1/node.py:387 +#: ironic/api/controllers/v1/node.py:436 msgid "Method not specified" msgstr "" -#: ironic/api/controllers/v1/node.py:417 +#: ironic/api/controllers/v1/node.py:466 msgid "Chassis id not specified." msgstr "" -#: ironic/api/controllers/v1/node.py:473 +#: ironic/api/controllers/v1/node.py:641 #, python-format -msgid "Invalid parameter value: %s, 'associated' can only be true or false." +msgid "Node %s can not be updated while a state transition is in progress." msgstr "" -#: ironic/api/controllers/v1/node.py:584 -#, python-format -msgid "Node %s can not be updated while a state transitionis in progress." -msgstr "" - -#: ironic/api/controllers/v1/port.py:172 +#: ironic/api/controllers/v1/port.py:166 msgid "Node id not specified." msgstr "" -#: ironic/api/controllers/v1/types.py:150 +#: ironic/api/controllers/v1/types.py:128 #, python-format msgid "'%s' is an internal attribute and can not be updated" msgstr "" -#: ironic/api/controllers/v1/types.py:154 +#: ironic/api/controllers/v1/types.py:132 #, python-format msgid "'%s' is a mandatory attribute and can not be removed" msgstr "" -#: ironic/api/controllers/v1/types.py:159 +#: ironic/api/controllers/v1/types.py:137 #, python-format -msgid "Adding a new attribute (%s) to the root of the resource is not allowed" +msgid "" +"Adding a new attribute (%s) to the root of the resource is not allowed" msgstr "" -#: ironic/api/controllers/v1/types.py:165 +#: ironic/api/controllers/v1/types.py:143 msgid "'add' and 'replace' operations needs value" msgstr "" -#: ironic/api/controllers/v1/types.py:193 +#: ironic/api/controllers/v1/types.py:174 #, python-format msgid "Wrong type. Expected '%(type)s', got '%(value)s'" msgstr "" -#: ironic/api/controllers/v1/utils.py:28 +#: ironic/api/controllers/v1/utils.py:31 msgid "Limit must be positive" msgstr "" -#: ironic/api/controllers/v1/utils.py:35 +#: ironic/api/controllers/v1/utils.py:38 #, python-format msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'" msgstr "" +#: ironic/api/middleware/auth_token.py:40 +#, python-format +msgid "Cannot compile public API routes: %s" +msgstr "" + #: ironic/api/middleware/parsable_error.py:52 #, python-format msgid "ErrorDocumentMiddleware received an invalid status %s" @@ -104,877 +94,1330 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ironic/cmd/api.py:48 +#: ironic/cmd/api.py:53 #, python-format msgid "Serving on http://%(host)s:%(port)s" msgstr "" -#: ironic/cmd/api.py:50 +#: ironic/cmd/api.py:55 msgid "Configuration:" msgstr "" -#: ironic/common/exception.py:59 +#: ironic/common/exception.py:57 msgid "An unknown exception occurred." -msgstr "" +msgstr "發生一個未知例外" -#: ironic/common/exception.py:80 ironic/openstack/common/rpc/common.py:87 +#: ironic/common/exception.py:78 ironic/openstack/common/rpc/common.py:88 msgid "Exception in string format operation" -msgstr "" +msgstr "字串格式化作業發生異常狀況" -#: ironic/common/exception.py:100 +#: ironic/common/exception.py:98 msgid "Not authorized." -msgstr "" +msgstr "未被授權" -#: ironic/common/exception.py:105 +#: ironic/common/exception.py:103 msgid "Operation not permitted." msgstr "" -#: ironic/common/exception.py:109 +#: ironic/common/exception.py:107 msgid "Unacceptable parameters." -msgstr "" +msgstr "不可接受的參數值" -#: ironic/common/exception.py:114 +#: ironic/common/exception.py:112 msgid "Conflict." msgstr "" -#: ironic/common/exception.py:119 +#: ironic/common/exception.py:117 +msgid "Resource temporarily unavailable, please retry." +msgstr "" + +#: ironic/common/exception.py:122 msgid "Invalid resource state." msgstr "" -#: ironic/common/exception.py:123 +#: ironic/common/exception.py:126 #, python-format msgid "A Port with MAC address %(mac)s already exists." msgstr "" -#: ironic/common/exception.py:127 +#: ironic/common/exception.py:130 #, python-format msgid "Expected a uuid but received %(uuid)s." -msgstr "" +msgstr "需要 UUID,但收到 %(uuid)s。" -#: ironic/common/exception.py:131 +#: ironic/common/exception.py:134 #, python-format msgid "Expected an uuid or int but received %(identity)s." msgstr "" -#: ironic/common/exception.py:135 +#: ironic/common/exception.py:138 #, python-format msgid "Expected a MAC address but received %(mac)s." msgstr "" -#: ironic/common/exception.py:139 +#: ironic/common/exception.py:142 #, python-format msgid "Invalid state '%(state)s' requested for node %(node)s." msgstr "" -#: ironic/common/exception.py:143 +#: ironic/common/exception.py:146 +#, python-format +msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s" +msgstr "" + +#: ironic/common/exception.py:150 #, python-format msgid "Failed to deploy instance: %(reason)s" msgstr "" -#: ironic/common/exception.py:147 ironic/common/exception.py:151 +#: ironic/common/exception.py:154 ironic/common/exception.py:158 #, python-format msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "" +msgstr "無法接受映像檔 %(image_id)s:%(reason)s" -#: ironic/common/exception.py:157 +#: ironic/common/exception.py:164 #, python-format msgid "%(err)s" -msgstr "" +msgstr "%(err)s" -#: ironic/common/exception.py:161 +#: ironic/common/exception.py:168 msgid "Resource could not be found." -msgstr "" +msgstr "找不到資源。" -#: ironic/common/exception.py:166 +#: ironic/common/exception.py:173 #, python-format msgid "Failed to load driver %(driver_name)s." msgstr "" -#: ironic/common/exception.py:170 +#: ironic/common/exception.py:177 #, python-format msgid "Image %(image_id)s could not be found." -msgstr "" +msgstr "找不到映像檔 %(image_id)s。" -#: ironic/common/exception.py:174 +#: ironic/common/exception.py:181 #, python-format -msgid "Instance %(instance)s could not be found." +msgid "No valid host was found. Reason: %(reason)s" msgstr "" -#: ironic/common/exception.py:178 +#: ironic/common/exception.py:185 #, python-format -msgid "Node %(node)s could not be found." +msgid "Instance %(instance)s could not be found." msgstr "" -#: ironic/common/exception.py:182 +#: ironic/common/exception.py:189 #, python-format -msgid "Node %(node)s is locked by another process." +msgid "Node %(node)s could not be found." msgstr "" -#: ironic/common/exception.py:186 +#: ironic/common/exception.py:193 #, python-format msgid "Node %(node)s is associated with instance %(instance)s." msgstr "" -#: ironic/common/exception.py:190 +#: ironic/common/exception.py:197 #, python-format msgid "Port %(port)s could not be found." msgstr "" -#: ironic/common/exception.py:194 +#: ironic/common/exception.py:201 #, python-format msgid "Update DHCP options on port: %(port_id)s failed." msgstr "" -#: ironic/common/exception.py:198 +#: ironic/common/exception.py:205 +#, python-format +msgid "Update MAC address on port: %(port_id)s failed." +msgstr "" + +#: ironic/common/exception.py:209 #, python-format msgid "Chassis %(chassis)s could not be found." msgstr "" -#: ironic/common/exception.py:202 +#: ironic/common/exception.py:213 #, python-format msgid "Conductor %(conductor)s could not be found." msgstr "" -#: ironic/common/exception.py:206 +#: ironic/common/exception.py:217 #, python-format msgid "Conductor %(conductor)s already registered." msgstr "" -#: ironic/common/exception.py:210 +#: ironic/common/exception.py:221 #, python-format msgid "Failed to set node power state to %(pstate)s." msgstr "" -#: ironic/common/exception.py:214 -msgid "An exclusive lock is required, but the current context has a shared lock." +#: ironic/common/exception.py:225 +msgid "" +"An exclusive lock is required, but the current context has a shared lock." msgstr "" -#: ironic/common/exception.py:219 +#: ironic/common/exception.py:230 #, python-format msgid "Failed to toggle maintenance-mode flag for node %(node)s: %(reason)s" msgstr "" -#: ironic/common/exception.py:224 +#: ironic/common/exception.py:235 +#, python-format +msgid "Console access is not enabled on node %(node)s" +msgstr "" + +#: ironic/common/exception.py:239 #, python-format msgid "" -"Can not change instance association while node %(node)s is in power state" -" %(pstate)s." +"The %(op)s operation can't be performed on node %(node)s because it's in " +"maintenance mode." msgstr "" -#: ironic/common/exception.py:229 +#: ironic/common/exception.py:244 #, python-format msgid "" -"Cannot complete the requested action because chassis %(chassis)s contains" -" nodes." +"Can not change instance association while node %(node)s is in power state " +"%(pstate)s." msgstr "" -#: ironic/common/exception.py:234 +#: ironic/common/exception.py:249 +#, python-format +msgid "" +"Cannot complete the requested action because chassis %(chassis)s contains " +"nodes." +msgstr "" + +#: ironic/common/exception.py:254 #, python-format msgid "IPMI call failed: %(cmd)s." msgstr "" -#: ironic/common/exception.py:238 +#: ironic/common/exception.py:258 #, python-format msgid "Failed to establish SSH connection to host %(host)s." msgstr "" -#: ironic/common/exception.py:242 +#: ironic/common/exception.py:262 #, python-format msgid "Failed to execute command via SSH: %(cmd)s." msgstr "" -#: ironic/common/exception.py:246 +#: ironic/common/exception.py:266 #, python-format msgid "Unsupported object type %(objtype)s" msgstr "" -#: ironic/common/exception.py:250 +#: ironic/common/exception.py:270 #, python-format msgid "Cannot call %(method)s on orphaned %(objtype)s object" msgstr "" -#: ironic/common/exception.py:254 +#: ironic/common/exception.py:274 #, python-format msgid "Driver %(driver)s does not support %(extension)s." msgstr "" -#: ironic/common/exception.py:258 +#: ironic/common/exception.py:278 #, python-format msgid "Version %(objver)s of %(objname)s is not supported" msgstr "" -#: ironic/common/exception.py:262 +#: ironic/common/exception.py:282 #, python-format msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s" -msgstr "" +msgstr "Glance 主機 %(host)s:%(port)s 連線失敗:%(reason)s" -#: ironic/common/exception.py:267 +#: ironic/common/exception.py:287 #, python-format msgid "Not authorized for image %(image_id)s." -msgstr "" +msgstr "未獲映像檔 %(image_id)s 的授權。" -#: ironic/common/exception.py:271 +#: ironic/common/exception.py:291 #, python-format msgid "Invalid image href %(image_href)s." -msgstr "" +msgstr "無效的映像檔 href %(image_href)s。" -#: ironic/common/exception.py:275 +#: ironic/common/exception.py:295 msgid "Unauthorised for keystone service catalog." msgstr "" -#: ironic/common/exception.py:283 +#: ironic/common/exception.py:303 #, python-format msgid "" -"Service type %(service_type)s with endpoint type %(endpoint_type)s not " -"found in keystone service catalog." +"Service type %(service_type)s with endpoint type %(endpoint_type)s not found" +" in keystone service catalog." msgstr "" -#: ironic/common/exception.py:288 +#: ironic/common/exception.py:308 msgid "Connection failed" msgstr "" -#: ironic/common/exception.py:292 +#: ironic/common/exception.py:312 msgid "Requested OpenStack Images API is forbidden" msgstr "" -#: ironic/common/exception.py:300 +#: ironic/common/exception.py:320 msgid "The provided endpoint is invalid" msgstr "" -#: ironic/common/exception.py:304 +#: ironic/common/exception.py:324 msgid "Unable to communicate with the server." msgstr "" -#: ironic/common/exception.py:320 +#: ironic/common/exception.py:340 #, python-format msgid "Could not find config at %(path)s" +msgstr "在 %(path)s 處找不到配置" + +#: ironic/common/exception.py:344 +#, python-format +msgid "" +"Node %(node)s is locked by host %(host)s, please retry after the current " +"operation is completed." msgstr "" -#: ironic/common/images.py:112 -msgid "Snapshot list encountered but no header found!" +#: ironic/common/exception.py:349 +msgid "" +"Requested action cannot be performed due to lack of free conductor workers." msgstr "" -#: ironic/common/images.py:205 -msgid "'qemu-img info' parsing failed." +#: ironic/common/exception.py:359 +#, python-format +msgid "Invalid configuration file. %(error_msg)s" +msgstr "" + +#: ironic/common/hash_ring.py:65 +msgid "Invalid hosts supplied when building HashRing." msgstr "" -#: ironic/common/images.py:211 +#: ironic/common/hash_ring.py:78 +msgid "Invalid data supplied to HashRing.get_hosts." +msgstr "" + +#: ironic/common/images.py:110 +msgid "Snapshot list encountered but no header found!" +msgstr "發現 Snapshot 清單,但找不到標頭!" + +#: ironic/common/images.py:203 +msgid "'qemu-img info' parsing failed." +msgstr "'qemu-img info' 剖析失敗。" + +#: ironic/common/images.py:209 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" +msgstr "fmt = %(fmt)s 受 %(backing_file)s 支援" -#: ironic/common/images.py:217 +#: ironic/common/images.py:215 #, python-format msgid "%(image)s was %(format)s, converting to raw" msgstr "" -#: ironic/common/images.py:226 +#: ironic/common/images.py:224 #, python-format msgid "Converted to raw, but format is now %s" +msgstr "已轉換為原始,但格式現在為 %s" + +#: ironic/common/keystone.py:30 +msgid "Keystone API endpoint is missing" msgstr "" -#: ironic/common/keystone.py:47 +#: ironic/common/keystone.py:53 #, python-format msgid "Could not perform authorization process for service catalog: %s" msgstr "" -#: ironic/common/keystone.py:52 +#: ironic/common/keystone.py:58 msgid "No keystone service catalog loaded" msgstr "" #: ironic/common/neutron.py:91 #, python-format -msgid "Neutron error updating port: %s" +msgid "Failed to update Neutron port %s." msgstr "" -#: ironic/common/policy.py:33 -msgid "JSON file representing policy" +#: ironic/common/neutron.py:105 +#, python-format +msgid "Failed to update MAC address on Neutron port %s." msgstr "" -#: ironic/common/policy.py:36 -msgid "Rule checked when requested rule is not found" +#: ironic/common/policy.py:31 +msgid "JSON file representing policy." msgstr "" -#: ironic/common/utils.py:67 +#: ironic/common/policy.py:34 +msgid "Rule checked when requested rule is not found." +msgstr "" + +#: ironic/common/utils.py:65 #, python-format msgid "Execution completed, command line is \"%s\"" msgstr "" -#: ironic/common/utils.py:68 +#: ironic/common/utils.py:66 #, python-format msgid "Command stdout is: \"%s\"" msgstr "" -#: ironic/common/utils.py:69 +#: ironic/common/utils.py:67 #, python-format msgid "Command stderr is: \"%s\"" msgstr "" -#: ironic/common/utils.py:101 +#: ironic/common/utils.py:98 +msgid "Invalid private key" +msgstr "" + +#: ironic/common/utils.py:112 #, python-format msgid "SSH connect failed: %s" msgstr "" -#: ironic/common/utils.py:134 +#: ironic/common/utils.py:145 #, python-format msgid "Invalid backend: %s" -msgstr "" +msgstr "無效的後端:%s" -#: ironic/common/utils.py:312 ironic/openstack/common/fileutils.py:65 +#: ironic/common/utils.py:323 ironic/openstack/common/fileutils.py:65 #, python-format msgid "Reloading cached file %s" -msgstr "" +msgstr "正在重新載入快取檔 %s" -#: ironic/common/utils.py:400 +#: ironic/common/utils.py:411 #, python-format msgid "Could not remove tmpdir: %s" -msgstr "" +msgstr "無法移除 tmpdir:%s" -#: ironic/common/utils.py:435 +#: ironic/common/utils.py:446 #, python-format msgid "Failed to unlink %(path)s, error: %(e)s" -msgstr "" +msgstr "無法解除 %(path)s 的鏈結,錯誤:%(e)s" -#: ironic/common/utils.py:444 +#: ironic/common/utils.py:455 #, python-format msgid "Failed to remove dir %(path)s, error: %(e)s" -msgstr "" +msgstr "無法移除目錄 %(path)s,錯誤:%(e)s" -#: ironic/common/utils.py:460 +#: ironic/common/utils.py:471 #, python-format msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s" -msgstr "" +msgstr "無法建立從 %(source)s 到 %(link)s 的符號鏈結,錯誤:%(e)s" -#: ironic/common/utils.py:474 +#: ironic/common/utils.py:485 #, python-format msgid "" "Failed to remove trailing character. Returning original object. Supplied " "object is not a string: %s," msgstr "" -#: ironic/common/glance_service/base_image_service.py:126 +#: ironic/common/glance_service/base_image_service.py:125 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." -msgstr "" +msgstr "聯絡 '%(method)s' 的 Glance 伺服器 '%(host)s:%(port)s' 時發生錯誤,%(extra)s" -#: ironic/common/glance_service/base_image_service.py:162 +#: ironic/common/glance_service/base_image_service.py:161 msgid "Getting a full list of images metadata from glance." msgstr "" -#: ironic/common/glance_service/base_image_service.py:183 +#: ironic/common/glance_service/base_image_service.py:182 #, python-format msgid "Getting image metadata from glance. Image: %s" msgstr "" -#: ironic/conductor/manager.py:108 +#: ironic/conductor/manager.py:144 #, python-format msgid "" -"A conductor with hostname %(hostname)s was previously registered. " -"Updating registration" +"A conductor with hostname %(hostname)s was previously registered. Updating " +"registration" msgstr "" -#: ironic/conductor/manager.py:124 +#: ironic/conductor/manager.py:165 #, python-format msgid "Received notification: %r" msgstr "" -#: ironic/conductor/manager.py:153 +#: ironic/conductor/manager.py:188 #, python-format msgid "RPC update_node called for node %s." msgstr "" -#: ironic/conductor/manager.py:157 +#: ironic/conductor/manager.py:192 msgid "Invalid method call: update_node can not change node state." msgstr "" -#: ironic/conductor/manager.py:197 +#: ironic/conductor/manager.py:233 #, python-format msgid "" -"RPC change_node_power_state called for node %(node)s. The desired new " -"state is %(state)s." -msgstr "" - -#: ironic/conductor/manager.py:215 -#, python-format -msgid "RPC validate_vendor_action called for node %s." +"RPC change_node_power_state called for node %(node)s. The desired new state " +"is %(state)s." msgstr "" -#: ironic/conductor/manager.py:230 +#: ironic/conductor/manager.py:272 #, python-format -msgid "Failed to validate vendor info. Error: %s" +msgid "RPC vendor_passthru called for node %s." msgstr "" -#: ironic/conductor/manager.py:248 +#: ironic/conductor/manager.py:318 #, python-format msgid "RPC do_node_deploy called for node %s." msgstr "" -#: ironic/conductor/manager.py:253 +#: ironic/conductor/manager.py:324 #, python-format msgid "" "RPC do_node_deploy called for %(node)s, but provision state is already " "%(state)s." msgstr "" -#: ironic/conductor/manager.py:259 -#, python-format -msgid "RPC do_node_deploy called for %s, but node is in maintenance mode." +#: ironic/conductor/manager.py:330 +msgid "provisioning" msgstr "" -#: ironic/conductor/manager.py:268 +#: ironic/conductor/manager.py:336 #, python-format -msgid "Failed to validate deploy info. Error: %s" +msgid "RPC do_node_deploy failed to validate deploy info. Error: %(msg)s" msgstr "" -#: ironic/conductor/manager.py:282 +#: ironic/conductor/manager.py:363 #, python-format msgid "Failed to deploy. Error: %s" msgstr "" -#: ironic/conductor/manager.py:304 +#: ironic/conductor/manager.py:393 #, python-format msgid "RPC do_node_tear_down called for node %s." msgstr "" -#: ironic/conductor/manager.py:311 +#: ironic/conductor/manager.py:402 #, python-format -msgid "RCP do_node_tear_down not allowed for node %(node)s in state %(state)s" +msgid "RPC do_node_tear_down not allowed for node %(node)s in state %(state)s" msgstr "" -#: ironic/conductor/manager.py:336 +#: ironic/conductor/manager.py:410 +#, python-format +msgid "RPC do_node_tear_down failed to validate deploy info. Error: %(msg)s" +msgstr "" + +#: ironic/conductor/manager.py:438 #, python-format msgid "Failed to tear down. Error: %s" msgstr "" -#: ironic/conductor/manager.py:377 +#: ironic/conductor/manager.py:459 +#, python-format +msgid "" +"During sync_power_state, max retries exceeded for node %(node)s, node state " +"%(actual)s does not match expected state '%(state)s'. Updating DB state to " +"'%(actual)s' Switching node to maintenance mode." +msgstr "" + +#: ironic/conductor/manager.py:481 +#, python-format +msgid "" +"During sync_power_state, could not get power state for node %(node)s. Error:" +" %(err)s." +msgstr "" + +#: ironic/conductor/manager.py:493 +#, python-format +msgid "" +"During sync_power_state, node %(node)s has no previous known state. " +"Recording current state '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:506 #, python-format msgid "" -"During sync_power_state, could not get power state for node %(node)s. " -"Error: %(err)s." +"During sync_power_state, node %(node)s state does not match expected state " +"'%(state)s'. Updating recorded state to '%(actual)s'." msgstr "" -#: ironic/conductor/manager.py:386 +#: ironic/conductor/manager.py:522 #, python-format msgid "" -"During sync_power_state, node %(node)s out of sync. Expected: %(old)s. " -"Actual: %(new)s. Updating DB." +"During sync_power_state, node %(node)s state '%(actual)s' does not match " +"expected state. Changing hardware state to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:535 +#, python-format +msgid "Failed to change power state of node %(node)s to '%(state)s'." +msgstr "" + +#: ironic/conductor/manager.py:540 +#, python-format +msgid "%(left)s attempts remaining to sync_power_state for node %(node)s" msgstr "" -#: ironic/conductor/manager.py:396 +#: ironic/conductor/manager.py:572 #, python-format msgid "" -"During sync_power_state, node %(node)s was not found and presumed deleted" -" by another process." +"During sync_power_state, node %(node)s was not found and presumed deleted by" +" another process." msgstr "" -#: ironic/conductor/manager.py:401 +#: ironic/conductor/manager.py:577 #, python-format msgid "" "During sync_power_state, node %(node)s was already locked by another " "process. Skip." msgstr "" -#: ironic/conductor/manager.py:435 +#: ironic/conductor/manager.py:610 +#, python-format +msgid "Timeout reached when waiting callback for node %s" +msgstr "" + +#: ironic/conductor/manager.py:653 #, python-format msgid "RPC validate_driver_interfaces called for node %s." msgstr "" -#: ironic/conductor/manager.py:451 +#: ironic/conductor/manager.py:670 msgid "not supported" msgstr "" -#: ironic/conductor/manager.py:468 +#: ironic/conductor/manager.py:689 #, python-format msgid "" -"RPC change_node_maintenance_mode called for node %(node)s with " -"maintanence mode: %(mode)s" +"RPC change_node_maintenance_mode called for node %(node)s with maintanence " +"mode: %(mode)s" msgstr "" -#: ironic/conductor/manager.py:478 +#: ironic/conductor/manager.py:699 msgid "The node is already in maintenance mode" msgstr "" -#: ironic/conductor/manager.py:479 +#: ironic/conductor/manager.py:700 msgid "The node is not in maintenance mode" msgstr "" -#: ironic/conductor/resource_manager.py:81 +#: ironic/conductor/manager.py:743 +#, python-format +msgid "Node %s can't be deleted because it's not powered off" +msgstr "" + +#: ironic/conductor/manager.py:763 +#, python-format +msgid "RPC get_console_information called for node %s" +msgstr "" + +#: ironic/conductor/manager.py:798 +#, python-format +msgid "RPC set_console_mode called for node %(node)s with enabled %(enabled)s" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "enabled" +msgstr "" + +#: ironic/conductor/manager.py:816 +msgid "disabled" +msgstr "已關閉" + +#: ironic/conductor/manager.py:817 +#, python-format +msgid "No console action was triggered because the console is already %s" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "enabling" +msgstr "" + +#: ironic/conductor/manager.py:844 +msgid "disabling" +msgstr "" + +#: ironic/conductor/manager.py:845 +#, python-format +msgid "Error %(op)s the console on node %(node)s. Reason: %(error)s" +msgstr "" + +#: ironic/conductor/manager.py:867 +#, python-format +msgid "RPC update_port called for port %s." +msgstr "" + +#: ironic/conductor/manager.py:879 #, python-format -msgid "Release called on node %s for which no lock has been acquired." +msgid "" +"No VIF found for instance %(instance)s port %(port)s when attempting to " +"update Neutron port MAC address." msgstr "" -#: ironic/conductor/resource_manager.py:88 +#: ironic/conductor/rpcapi.py:97 #, python-format -msgid "Can not release node %s because it was not reserved by this tracker." +msgid "No conductor service registered which supports driver %s." msgstr "" -#: ironic/conductor/task_manager.py:150 +#: ironic/conductor/task_manager.py:199 msgid "Multi-node TaskManager has no attribute 'node'" msgstr "" -#: ironic/conductor/task_manager.py:159 +#: ironic/conductor/task_manager.py:208 +msgid "Multi-node TaskManager has no attribute 'ports'" +msgstr "" + +#: ironic/conductor/task_manager.py:217 msgid "Multi-node TaskManager has no attribute 'driver'" msgstr "" -#: ironic/conductor/task_manager.py:168 +#: ironic/conductor/task_manager.py:226 msgid "Multi-node TaskManager can't select single node manager from the list" msgstr "" -#: ironic/conductor/utils.py:43 ironic/conductor/utils.py:81 +#: ironic/conductor/utils.py:73 ironic/conductor/utils.py:111 #, python-format msgid "Failed to change power state to '%(target)s'. Error: %(error)s" msgstr "" -#: ironic/conductor/utils.py:60 +#: ironic/conductor/utils.py:90 #, python-format msgid "" -"Not going to change_node_power_state because current state = requested " -"state = '%(state)s'." +"Not going to change_node_power_state because current state = requested state" +" = '%(state)s'." msgstr "" -#: ironic/db/sqlalchemy/migration.py:43 -msgid "version should be an integer" +#: ironic/conductor/utils.py:130 +#, python-format +msgid "Cleanup failed for node %(node)s after deploy timeout: %(error)s" msgstr "" -#: ironic/db/sqlalchemy/migration.py:70 -msgid "Upgrade DB using Essex release first." +#: ironic/conductor/utils.py:142 +msgid "" +"Deploy timed out, but an unhandled exception was encountered while aborting." +" More info may be found in the log file." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/001_init.py:72 -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:46 -msgid "Exception while creating table." +#: ironic/drivers/utils.py:21 ironic/drivers/modules/fake.py:34 +#, python-format +msgid "Unsupported method (%s) passed through to vendor extension." msgstr "" -#: ironic/db/sqlalchemy/migrate_repo/versions/012_add_conductor_table.py:56 -msgid "Downgrade from version 012 is unsupported." +#: ironic/drivers/utils.py:24 ironic/drivers/modules/fake.py:37 +msgid "Method not specified when calling vendor extension." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:180 +#: ironic/drivers/modules/deploy_utils.py:205 #, python-format msgid "Parent device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:185 +#: ironic/drivers/modules/deploy_utils.py:210 #, python-format msgid "Root device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:188 +#: ironic/drivers/modules/deploy_utils.py:213 #, python-format msgid "Swap device '%s' not found" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:197 +#: ironic/drivers/modules/deploy_utils.py:217 +#, python-format +msgid "Ephemeral device '%s' not found" +msgstr "" + +#: ironic/drivers/modules/deploy_utils.py:229 msgid "Failed to detect root device UUID." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:214 -#: ironic/drivers/modules/deploy_utils.py:220 +#: ironic/drivers/modules/deploy_utils.py:267 +#: ironic/drivers/modules/deploy_utils.py:273 #, python-format msgid "Deploy to address %s failed." msgstr "" -#: ironic/drivers/modules/deploy_utils.py:215 +#: ironic/drivers/modules/deploy_utils.py:268 #, python-format msgid "Command: %s" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:216 +#: ironic/drivers/modules/deploy_utils.py:269 #, python-format msgid "StdOut: %r" msgstr "" -#: ironic/drivers/modules/deploy_utils.py:217 +#: ironic/drivers/modules/deploy_utils.py:270 #, python-format msgid "StdErr: %r" msgstr "" -#: ironic/drivers/modules/fake.py:37 ironic/drivers/modules/ipminative.py:245 +#: ironic/drivers/modules/fake.py:52 ironic/drivers/modules/ipminative.py:245 #, python-format msgid "set_power_state called with an invalid power state: %s." msgstr "" -#: ironic/drivers/modules/fake.py:75 -msgid "Invalid vendor passthru, no 'method' specified." -msgstr "" - -#: ironic/drivers/modules/fake.py:81 -msgid "Parameter not passed to Ironic." +#: ironic/drivers/modules/fake.py:92 +msgid "Parameter 'bar' not passed to method 'first_method'." msgstr "" -#: ironic/drivers/modules/fake.py:85 -#, python-format -msgid "Unsupported method (%s) passed through to vendor extension." +#: ironic/drivers/modules/fake.py:116 +msgid "Parameter 'bar' not passed to method 'second_method'." msgstr "" -#: ironic/drivers/modules/ipminative.py:60 +#: ironic/drivers/modules/ipminative.py:59 #, python-format msgid "The following IPMI credentials are not supplied to IPMI driver: %s." msgstr "" -#: ironic/drivers/modules/ipminative.py:81 +#: ironic/drivers/modules/ipminative.py:80 #, python-format msgid "" "IPMI power on failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:111 +#: ironic/drivers/modules/ipminative.py:110 #, python-format msgid "" "IPMI power off failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:143 +#: ironic/drivers/modules/ipminative.py:142 #, python-format msgid "" "IPMI power reboot failed for node %(node_id)s with the following error: " "%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:178 +#: ironic/drivers/modules/ipminative.py:177 #, python-format msgid "" -"IPMI get power state failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI get power state failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:192 +#: ironic/drivers/modules/ipminative.py:191 #, python-format msgid "" -"IPMI get power state for node %(node_id)s returns the following details:" -" %(detail)s" +"IPMI get power state for node %(node_id)s returns the following details: " +"%(detail)s" msgstr "" -#: ironic/drivers/modules/ipminative.py:281 -#: ironic/drivers/modules/ipmitool.py:316 +#: ironic/drivers/modules/ipminative.py:284 +#: ironic/drivers/modules/ipminative.py:311 +#: ironic/drivers/modules/ipmitool.py:359 +#: ironic/drivers/modules/ipmitool.py:376 #, python-format msgid "Invalid boot device %s specified." msgstr "" -#: ironic/drivers/modules/ipminative.py:290 +#: ironic/drivers/modules/ipminative.py:293 #, python-format msgid "" -"IPMI set boot device failed for node %(node_id)s with the following " -"error: %(error)s" +"IPMI set boot device failed for node %(node_id)s with the following error: " +"%(error)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:83 +#: ironic/drivers/modules/ipminative.py:314 +#, python-format +msgid "Unsupported method (%s) passed to IPMINative driver." +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:84 msgid "IPMI address not supplied to IPMI driver." msgstr "" -#: ironic/drivers/modules/ipmitool.py:126 +#: ironic/drivers/modules/ipmitool.py:89 #, python-format -msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgid "" +"Invalid privilege level value:%(priv_level)s, the valid value can be one of " +"%(valid_levels)s" msgstr "" -#: ironic/drivers/modules/ipmitool.py:160 +#: ironic/drivers/modules/ipmitool.py:136 +#, python-format +msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'" +msgstr "ipmitool 標準輸出:'%(out)s',標準錯誤:'%(err)s'" + +#: ironic/drivers/modules/ipmitool.py:186 #, python-format -msgid "IPMI power on failed for node %s." +msgid "IPMI power %(state)s failed for node %(node)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:198 +#: ironic/drivers/modules/ipmitool.py:197 #, python-format -msgid "IPMI power off failed for node %s." +msgid "IPMI power %(state)s timed out after %(tries)s retries." msgstr "" -#: ironic/drivers/modules/ipmitool.py:219 +#: ironic/drivers/modules/ipmitool.py:249 #, python-format msgid "IPMI power status failed for node %(node_id)s with error: %(error)s." msgstr "" -#: ironic/drivers/modules/ipmitool.py:277 ironic/drivers/modules/ssh.py:393 +#: ironic/drivers/modules/ipmitool.py:279 +#, python-format +msgid "BMC inaccessible for node %(node)s: %(error)s" +msgstr "" + +#: ironic/drivers/modules/ipmitool.py:317 ironic/drivers/modules/ssh.py:436 #, python-format msgid "set_power_state called with invalid power state %s." msgstr "" -#: ironic/drivers/modules/pxe.py:104 +#: ironic/drivers/modules/ipmitool.py:379 +#, python-format +msgid "Unsupported method (%s) passed to IPMItool driver." +msgstr "" + +#: ironic/drivers/modules/pxe.py:106 #, python-format msgid "" -"Can not validate PXE bootloader. The following parameters were not passed" -" to ironic: %s" +"Can not validate PXE bootloader. The following parameters were not passed to" +" ironic: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:120 +#: ironic/drivers/modules/pxe.py:118 #, python-format -msgid "Can not validate PXE bootloader. Invalid parameter %s" +msgid "" +"Can not validate PXE bootloader. Invalid parameter pxe_%(param)s. Reason: " +"%(reason)s" msgstr "" -#: ironic/drivers/modules/pxe.py:139 +#: ironic/drivers/modules/pxe.py:124 #, python-format -msgid "Building PXE config for deployment %s." +msgid "'%s' is not an integer value." msgstr "" -#: ironic/drivers/modules/pxe.py:324 +#: ironic/drivers/modules/pxe.py:135 +msgid "" +"The deploy contains an ephemeral partition, but no filesystem type was " +"specified by the pxe_ephemeral_format parameter" +msgstr "" + +#: ironic/drivers/modules/pxe.py:162 +#, python-format +msgid "Building PXE config for deployment %s." +msgstr "正在給部署 %s 建置 PXE 配置。" + +#: ironic/drivers/modules/pxe.py:363 #, python-format msgid "Fetching kernel and ramdisk for node %s" msgstr "" -#: ironic/drivers/modules/pxe.py:354 +#: ironic/drivers/modules/pxe.py:393 #, python-format msgid "Fetching image %(ami)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/pxe.py:593 +#: ironic/drivers/modules/pxe.py:491 +#, python-format +msgid "" +"No VIFs found for node %(node)s when attempting to update Neutron DHCP BOOT " +"options." +msgstr "" + +#: ironic/drivers/modules/pxe.py:510 +#, python-format +msgid "Failed to set DHCP BOOT options for any port on node %s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:514 +#, python-format +msgid "" +"Some errors were encountered when updating the DHCP BOOT options for node " +"%(node)s on the following ports: %(ports)s." +msgstr "" + +#: ironic/drivers/modules/pxe.py:549 ironic/drivers/modules/ssh.py:381 +#, python-format +msgid "Node %s does not have any port associated with it." +msgstr "" + +#: ironic/drivers/modules/pxe.py:560 +msgid "" +"Couldn't get the URL of the Ironic API service from the configuration file " +"or keystone catalog." +msgstr "" + +#: ironic/drivers/modules/pxe.py:670 msgid "Deploy key is not match" msgstr "" -#: ironic/drivers/modules/pxe.py:609 +#: ironic/drivers/modules/pxe.py:687 #, python-format msgid "Parameters %s were not passed to ironic for deploy." msgstr "" -#: ironic/drivers/modules/pxe.py:623 +#: ironic/drivers/modules/pxe.py:701 #, python-format msgid "Unsupported method (%s) passed to PXE driver." msgstr "" -#: ironic/drivers/modules/pxe.py:643 +#: ironic/drivers/modules/pxe.py:722 #, python-format msgid "" "Node %s failed to power off while handling deploy failure. This may be a " -"serious condition. Node should be removed from Ironic or put in " -"maintenance mode until the problem is resolved." +"serious condition. Node should be removed from Ironic or put in maintenance " +"mode until the problem is resolved." +msgstr "" + +#: ironic/drivers/modules/pxe.py:734 +#, python-format +msgid "Node %s is not waiting to be deployed." msgstr "" -#: ironic/drivers/modules/pxe.py:661 +#: ironic/drivers/modules/pxe.py:746 #, python-format msgid "Error returned from PXE deploy ramdisk: %s" msgstr "" -#: ironic/drivers/modules/pxe.py:663 +#: ironic/drivers/modules/pxe.py:748 msgid "Failure in PXE deploy ramdisk." msgstr "" -#: ironic/drivers/modules/pxe.py:666 +#: ironic/drivers/modules/pxe.py:751 #, python-format msgid "Continuing deployment for node %(node)s, params %(params)s" msgstr "" -#: ironic/drivers/modules/pxe.py:674 +#: ironic/drivers/modules/pxe.py:757 +#, python-format +msgid "PXE deploy failed for instance %(instance)s. Error: %(error)s" +msgstr "" + +#: ironic/drivers/modules/pxe.py:760 msgid "PXE driver failed to continue deployment." msgstr "" -#: ironic/drivers/modules/pxe.py:676 +#: ironic/drivers/modules/pxe.py:762 #, python-format msgid "Deployment to node %s done" msgstr "" -#: ironic/drivers/modules/ssh.py:99 -#, python-format -msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." +#: ironic/drivers/modules/seamicro.py:91 +msgid "SeaMicro driver requires api_endpoint be set" msgstr "" -#: ironic/drivers/modules/ssh.py:122 -msgid "SSHPowerDriver requires ssh_port to be integer value" +#: ironic/drivers/modules/seamicro.py:95 +msgid "SeaMicro driver requires both username and password be set" msgstr "" -#: ironic/drivers/modules/ssh.py:137 -msgid "SSHPowerDriver requires virt_type be set." +#: ironic/drivers/modules/seamicro.py:99 +msgid "SeaMicro driver requires server_id be set" msgstr "" -#: ironic/drivers/modules/ssh.py:143 +#: ironic/drivers/modules/seamicro.py:149 #, python-format -msgid "" -"SSHPowerDriver '%(virt_type)s' is not a valid virt_type, supported types " -"are: %(valid)s" -msgstr "" - -#: ironic/drivers/modules/ssh.py:151 -msgid "SSHPowerDriver requires both address and username be set." -msgstr "" - -#: ironic/drivers/modules/ssh.py:157 -msgid "SSHPowerDriver requires either password or key_filename be set." +msgid "SeaMicro client exception %(msg)s for node %(uuid)s" msgstr "" -#: ironic/drivers/modules/ssh.py:161 +#: ironic/drivers/modules/seamicro.py:184 #, python-format -msgid "SSH key file %s not found." +msgid "Power-on failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:194 +#: ironic/drivers/modules/seamicro.py:223 #, python-format -msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgid "Power-off failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:225 +#: ironic/drivers/modules/seamicro.py:262 #, python-format -msgid "Retrieved Node List: %s" +msgid "Reboot failed for node %s." msgstr "" -#: ironic/drivers/modules/ssh.py:230 -#, python-format -msgid "Checking Node: %s's Mac address." +#: ironic/drivers/modules/seamicro.py:287 +msgid "Invalid volume id specified" msgstr "" -#: ironic/drivers/modules/ssh.py:243 -#, python-format -msgid "Found Mac address: %s" +#: ironic/drivers/modules/seamicro.py:303 +msgid "No storage pools found for ironic" msgstr "" -#: ironic/drivers/modules/ssh.py:343 -#, python-format -msgid "SSH connection cannot be established: %s" +#: ironic/drivers/modules/seamicro.py:363 +msgid "set_power_state called with invalid power state." msgstr "" -#: ironic/objects/base.py:54 +#: ironic/drivers/modules/seamicro.py:394 #, python-format -msgid "Error setting %(attr)s" +msgid "Unsupported method (%s) passed to SeaMicro driver." msgstr "" -#: ironic/objects/base.py:145 -msgid "Invalid version string" +#: ironic/drivers/modules/seamicro.py:412 +msgid "No vlan id provided" msgstr "" -#: ironic/objects/base.py:200 +#: ironic/drivers/modules/seamicro.py:424 +#: ironic/drivers/modules/seamicro.py:459 #, python-format -msgid "Unable to instantiate unregistered object type %(objtype)s" +msgid "SeaMicro client exception: %s" msgstr "" -#: ironic/objects/base.py:301 -#, python-format -msgid "Cannot load '%(attrname)s' in the base class" +#: ironic/drivers/modules/seamicro.py:449 +msgid "No volume size provided for creating volume" msgstr "" -#: ironic/objects/base.py:310 -msgid "Cannot save anything in the base class" +#: ironic/drivers/modules/seamicro.py:475 +msgid "No boot device provided" msgstr "" -#: ironic/objects/conductor.py:55 -msgid "Cannot update a conductor record directly." +#: ironic/drivers/modules/seamicro.py:478 +msgid "Boot device is invalid" msgstr "" -#: ironic/objects/utils.py:39 -msgid "A datetime.datetime is required here" +#: ironic/drivers/modules/seamicro.py:488 +#, python-format +msgid "set_boot_device error: %s" msgstr "" -#: ironic/objects/utils.py:104 +#: ironic/drivers/modules/ssh.py:115 #, python-format -msgid "An object of class %s is required here" +msgid "SSHPowerDriver '%(virt_type)s' is not a valid virt_type, " msgstr "" -#: ironic/openstack/common/excutils.py:64 +#: ironic/drivers/modules/ssh.py:140 #, python-format -msgid "Original exception being dropped: %s" +msgid "Cannot execute SSH cmd %(cmd)s. Reason: %(err)s." msgstr "" -#: ironic/openstack/common/excutils.py:93 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." +#: ironic/drivers/modules/ssh.py:163 +msgid "SSHPowerDriver requires ssh_port to be integer value" msgstr "" -#: ironic/openstack/common/lockutils.py:105 -#, python-format -msgid "Could not release the acquired lock `%s`" +#: ironic/drivers/modules/ssh.py:179 +msgid "SSHPowerDriver requires virt_type be set." msgstr "" -#: ironic/openstack/common/lockutils.py:170 -#, python-format -msgid "Got semaphore \"%(lock)s\"" +#: ironic/drivers/modules/ssh.py:186 +msgid "SSHPowerDriver requires both address and username be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:191 +msgid "" +"SSHPowerDriver requires one and only one of password, key_contents and " +"key_filename to be set." +msgstr "" + +#: ironic/drivers/modules/ssh.py:200 +#, python-format +msgid "SSH key file %s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:233 +#, python-format +msgid "Node \"%(host)s\" with MAC address %(mac)s not found." +msgstr "" + +#: ironic/drivers/modules/ssh.py:264 +#, python-format +msgid "Retrieved Node List: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:269 +#, python-format +msgid "Checking Node: %s's Mac address." +msgstr "" + +#: ironic/drivers/modules/ssh.py:282 +#, python-format +msgid "Found Mac address: %s" +msgstr "" + +#: ironic/drivers/modules/ssh.py:386 +#, python-format +msgid "SSH connection cannot be established: %s" +msgstr "" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:35 +msgid "VCPUs not set; assuming CPU collection broken" +msgstr "未設定 VCPU;將假定 CPU 集合已損壞" + +#: ironic/nova/scheduler/filters/exact_core_filter.py:42 +#, python-format +msgid "" +"%(host_state)s does not have %(requested_vcpus)s cores of usable vcpu, it " +"only has %(usable_vcpus)s cores of usable vcpu." +msgstr "" + +#: ironic/nova/scheduler/filters/exact_disk_filter.py:34 +#, 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 沒有 %(requested_disk)s MB 可用磁碟空間,只有 %(usable_disk_mb)s MB 可用磁碟空間。" + +#: ironic/nova/scheduler/filters/exact_ram_filter.py:30 +#, 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 沒有 %(requested_ram)s MB 可用 RAM,只有 %(usable_ram)s MB 可用 RAM。" + +#: ironic/nova/virt/ironic/driver.py:96 +msgid "Maximum number of retries reached." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:103 +#, python-format +msgid "Power state %s not found." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:261 +#, python-format +msgid "" +"Adding the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:285 +#, python-format +msgid "" +"Removing the parameter %(param)s on node %(node)s failed after %(retries)d " +"retries" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:314 +msgid "Unable to authenticate Ironic client." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:383 +#, python-format +msgid "Ironic node uuid not supplied to driver for instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:399 +#, python-format +msgid "Unable to set instance UUID for node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:414 +#, python-format +msgid "" +"Ironic node: %(id)s failed to validate. (deploy: %(deploy)s, power: " +"%(power)s)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:427 +#, python-format +msgid "" +"Error preparing deploy for instance %(instance)s on baremetal node %(node)s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:438 +#, python-format +msgid "Error triggering the node %s to start the deployment" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:465 +#, python-format +msgid "Failed to provision instance %(inst)s: %(reason)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:481 +#, python-format +msgid "Destroy called on non-existing instance %s." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:494 +#, python-format +msgid "Error triggering the unprovisioning of the node %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:518 +#, python-format +msgid "" +"Error destroying the instance on node %(node)s. Provision state still " +"'%(state)s'." +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:536 +#, python-format +msgid "Failed to unassociate the instance %(instance)s with node %(node)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:619 +#, python-format +msgid "plug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:628 +#, python-format +msgid "" +"Ironic node: %(id)s virtual to physical interface count missmatch (Vif " +"count: %(vif_count)d, Pif count: %(pif_count)d)" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:648 +#, python-format +msgid "Failed to set the VIF networking for port %s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:653 +#, python-format +msgid "unplug: instance_uuid=%(uuid)s vif=%(network_info)s" +msgstr "" + +#: ironic/nova/virt/ironic/driver.py:667 +#, python-format +msgid "Failed to remove the VIF networking for port %s" +msgstr "" + +#: ironic/objects/base.py:54 +#, python-format +msgid "Error setting %(attr)s" +msgstr "" + +#: ironic/objects/base.py:145 +msgid "Invalid version string" +msgstr "" + +#: ironic/objects/base.py:200 +#, python-format +msgid "Unable to instantiate unregistered object type %(objtype)s" +msgstr "" + +#: ironic/objects/base.py:301 +#, python-format +msgid "Cannot load '%(attrname)s' in the base class" +msgstr "" + +#: ironic/objects/base.py:310 +msgid "Cannot save anything in the base class" +msgstr "" + +#: ironic/objects/conductor.py:54 +msgid "Cannot update a conductor record directly." +msgstr "" + +#: ironic/objects/utils.py:39 +msgid "A datetime.datetime is required here" +msgstr "" + +#: ironic/objects/utils.py:104 +#, python-format +msgid "An object of class %s is required here" +msgstr "" + +#: ironic/openstack/common/excutils.py:64 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "正在捨棄原始異常狀況:%s" + +#: ironic/openstack/common/excutils.py:93 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ironic/openstack/common/gettextutils.py:297 +msgid "Message objects do not support addition." +msgstr "" + +#: ironic/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 "" + +#: ironic/openstack/common/lockutils.py:105 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "無法釋放獲得的鎖定 `%s`" + +#: ironic/openstack/common/lockutils.py:170 +#, python-format +msgid "Got semaphore \"%(lock)s\"" msgstr "" #: ironic/openstack/common/lockutils.py:179 @@ -1010,7 +1453,7 @@ #: ironic/openstack/common/log.py:303 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "已淘汰:%s" #: ironic/openstack/common/log.py:402 #, python-format @@ -1020,21 +1463,21 @@ #: ironic/openstack/common/log.py:453 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "Syslog 機能必須是下列其中一項:%s" #: ironic/openstack/common/log.py:623 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "呼叫已淘汰的配置時發生嚴重錯誤:%(msg)s" #: ironic/openstack/common/loopingcall.py:84 #, python-format msgid "task run outlasted interval by %s sec" -msgstr "" +msgstr "作業執行時間超出間隔 %s 秒鐘" #: ironic/openstack/common/loopingcall.py:91 msgid "in fixed duration looping call" -msgstr "" +msgstr "在固定持續時間的迴圈呼叫中" #: ironic/openstack/common/loopingcall.py:131 #, python-format @@ -1043,164 +1486,164 @@ #: ironic/openstack/common/loopingcall.py:138 msgid "in dynamic looping call" -msgstr "" +msgstr "在動態迴圈呼叫中" #: ironic/openstack/common/periodic_task.py:43 #, python-format msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" +msgstr "定期作業建立程序的引數不符合預期:%(arg)s。" #: ironic/openstack/common/periodic_task.py:134 #, python-format msgid "Skipping periodic task %(task)s because its interval is negative" -msgstr "" +msgstr "正在跳過定期作業 %(task)s,因為其間隔為負數" #: ironic/openstack/common/periodic_task.py:139 #, python-format msgid "Skipping periodic task %(task)s because it is disabled" -msgstr "" +msgstr "正在跳過定期作業 %(task)s,因為它已停用" #: ironic/openstack/common/periodic_task.py:177 #, python-format msgid "Running periodic task %(full_task_name)s" -msgstr "" +msgstr "正在執行定期作業 %(full_task_name)s" #: ironic/openstack/common/periodic_task.py:186 #, python-format msgid "Error during %(full_task_name)s: %(e)s" -msgstr "" +msgstr "執行 %(full_task_name)s 期間發生錯誤:%(e)s" #: ironic/openstack/common/policy.py:395 #, python-format msgid "Failed to understand rule %(rule)s" -msgstr "" +msgstr "無法理解規則 %(rule)s" #: ironic/openstack/common/policy.py:405 #, python-format msgid "No handler for matches of kind %s" -msgstr "" +msgstr "類型為 %s 的相符項沒有處理程式" #: ironic/openstack/common/policy.py:680 #, python-format msgid "Failed to understand rule %(rule)r" -msgstr "" +msgstr "無法理解規則 %(rule)r" #: ironic/openstack/common/processutils.py:127 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "已取得 utils.execute 的不明關鍵字引數:%r" #: ironic/openstack/common/processutils.py:142 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "正在執行 cmd(子程序):%s" #: ironic/openstack/common/processutils.py:167 #: ironic/openstack/common/processutils.py:240 #, python-format msgid "Result was %s" -msgstr "" +msgstr "結果是 %s" #: ironic/openstack/common/processutils.py:179 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r 失敗。正在重試。" #: ironic/openstack/common/processutils.py:219 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "正在執行 cmd (SSH):%s" #: ironic/openstack/common/processutils.py:221 msgid "Environment not supported over SSH" -msgstr "" +msgstr "無法透過 SSH 來支援環境" #: ironic/openstack/common/processutils.py:225 msgid "process_input not supported over SSH" -msgstr "" +msgstr "無法透過 SSH 來支援 process_input" -#: ironic/openstack/common/service.py:136 -#: ironic/openstack/common/service.py:348 +#: ironic/openstack/common/service.py:166 +#: ironic/openstack/common/service.py:384 msgid "Full set of CONF:" -msgstr "" +msgstr "一組完整的 CONF:" -#: ironic/openstack/common/service.py:145 -#: ironic/openstack/common/service.py:233 +#: ironic/openstack/common/service.py:175 +#: ironic/openstack/common/service.py:269 #, python-format msgid "Caught %s, exiting" -msgstr "" +msgstr "已捕捉到 %s,正在結束" -#: ironic/openstack/common/service.py:157 +#: ironic/openstack/common/service.py:187 msgid "Exception during rpc cleanup." msgstr "" -#: ironic/openstack/common/service.py:202 +#: ironic/openstack/common/service.py:238 msgid "Parent process has died unexpectedly, exiting" -msgstr "" +msgstr "母程序已非預期地當掉,正在結束" -#: ironic/openstack/common/service.py:239 +#: ironic/openstack/common/service.py:275 msgid "Unhandled exception" -msgstr "" +msgstr "無法處理的異常狀況" -#: ironic/openstack/common/service.py:272 +#: ironic/openstack/common/service.py:308 msgid "Forking too fast, sleeping" -msgstr "" +msgstr "分岔太快,正在休眠" -#: ironic/openstack/common/service.py:291 +#: ironic/openstack/common/service.py:327 #, python-format msgid "Started child %d" -msgstr "" +msgstr "已啟動子項 %d" -#: ironic/openstack/common/service.py:301 +#: ironic/openstack/common/service.py:337 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "正在啟動 %d 個工作程式" -#: ironic/openstack/common/service.py:318 +#: ironic/openstack/common/service.py:354 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" +msgstr "信號 %(sig)d 結束了子項 %(pid)d" -#: ironic/openstack/common/service.py:322 +#: ironic/openstack/common/service.py:358 #, python-format msgid "Child %(pid)s exited with status %(code)d" -msgstr "" +msgstr "子項 %(pid)s 已結束,狀態為 %(code)d" -#: ironic/openstack/common/service.py:326 +#: ironic/openstack/common/service.py:362 #, python-format msgid "pid %d not in child list" -msgstr "" +msgstr "PID %d 不在子項清單中" -#: ironic/openstack/common/service.py:356 +#: ironic/openstack/common/service.py:392 #, python-format msgid "Caught %s, stopping children" -msgstr "" +msgstr "已捕捉到 %s,正在停止子項" -#: ironic/openstack/common/service.py:374 +#: ironic/openstack/common/service.py:410 #, python-format msgid "Waiting on %d children to exit" -msgstr "" +msgstr "正在等待 %d 個子項結束" #: ironic/openstack/common/sslutils.py:52 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "找不到 cert_file:%s" #: ironic/openstack/common/sslutils.py:55 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "找不到 ca_file:%s" #: ironic/openstack/common/sslutils.py:58 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "找不到 key_file:%s" #: ironic/openstack/common/sslutils.py:61 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "在 SSL 模式下執行伺服器時,必須在配置檔中指定 cert_file 及 key_file 選項值" #: ironic/openstack/common/sslutils.py:100 #, python-format @@ -1220,661 +1663,523 @@ #: ironic/openstack/common/strutils.py:191 #, python-format msgid "Unknown byte multiplier: %s" -msgstr "" +msgstr "不明的位元組乘數:%s" -#: ironic/openstack/common/db/exception.py:42 +#: ironic/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "無效參數:現行資料庫不支援 Unicode。" -#: ironic/openstack/common/db/sqlalchemy/session.py:553 -msgid "DB exception wrapped." -msgstr "" +#: ironic/openstack/common/db/sqlalchemy/migration.py:188 +msgid "version should be an integer" +msgstr "版本應該是整數" -#: ironic/openstack/common/db/sqlalchemy/session.py:616 +#: ironic/openstack/common/db/sqlalchemy/migration.py:216 #, python-format -msgid "Got mysql server has gone away: %s" +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/session.py:697 -#, python-format -msgid "SQL connection failed. %s attempts left." +#: ironic/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 "" #: ironic/openstack/common/db/sqlalchemy/utils.py:60 msgid "Sort key supplied was not valid." +msgstr "提供的排序鍵無效。" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:121 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "不明的排序方向,必須為 'desc' 或 'asc'" + +#: ironic/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 "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:99 -msgid "Id not in sort_keys; is sort_keys unique?" +#: ironic/openstack/common/db/sqlalchemy/utils.py:176 +#, python-format +msgid "Unrecognized read_deleted value '%s'" +msgstr "無法辨識 read_deleted 值 '%s'" + +#: ironic/openstack/common/db/sqlalchemy/utils.py:183 +#, python-format +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:121 -msgid "Unknown sort direction, must be 'desc' or 'asc'" +#: ironic/openstack/common/db/sqlalchemy/utils.py:241 +msgid "model should be a subclass of ModelBase" msgstr "" -#: ironic/openstack/common/db/sqlalchemy/utils.py:196 +#: ironic/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 "" +msgstr "請在 col_name_col_instance 參數中指定直欄 %s。它是必要的,因為直欄具有不受 SQLite 支援的類型。" -#: ironic/openstack/common/db/sqlalchemy/utils.py:202 +#: ironic/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 "" - -#: ironic/openstack/common/db/sqlalchemy/utils.py:282 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +"col_name_col_instance param has wrong type of column instance for column %s " +"It should be instance of sqlalchemy.Column." +msgstr "col_name_col_instance 參數的直欄 %s 具有錯誤類型的直欄實例。它應該是 sqlalchemy.Column 的實例。" -#: ironic/openstack/common/db/sqlalchemy/utils.py:303 +#: ironic/openstack/common/db/sqlalchemy/utils.py:391 msgid "Unsupported id columns type" msgstr "" #: ironic/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" +msgstr "%s 的優先順序無效" #: ironic/openstack/common/notifier/api.py:145 #, python-format msgid "" "Problem '%(e)s' attempting to send to notification system. " "Payload=%(payload)s" -msgstr "" +msgstr "嘗試傳送至通知系統時發生問題 '%(e)s'。有效負載 = %(payload)s" #: ironic/openstack/common/notifier/api.py:164 #, python-format msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" +msgstr "無法載入通知者 %s。將不會傳送這些通知。" #: ironic/openstack/common/notifier/rpc_notifier.py:45 #: ironic/openstack/common/notifier/rpc_notifier2.py:51 #, python-format msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: ironic/openstack/common/rpc/__init__.py:106 -#, python-format -msgid "" -"A RPC is being made while holding a lock. The locks currently held are " -"%(locks)s. This is probably a bug. Please report it. Include the " -"following: [%(stack)s]." -msgstr "" +msgstr "無法將通知傳送給 %(topic)s。有效負載 = %(message)s" #: ironic/openstack/common/rpc/amqp.py:75 msgid "Pool creating new connection" +msgstr "儲存區正在建立新連線" + +#: ironic/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:200 +#: ironic/openstack/common/rpc/amqp.py:205 #, python-format -msgid "no calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgid "_call_waiters: %s" msgstr "" -#: ironic/openstack/common/rpc/amqp.py:209 +#: ironic/openstack/common/rpc/amqp.py:212 #, python-format msgid "" -"Number of call waiters is greater than warning threshhold: %d. There " -"could be a MulticallProxyWaiter leak." +"Number of call waiters is greater than warning threshold: %d. There could be" +" a MulticallProxyWaiter leak." msgstr "" -#: ironic/openstack/common/rpc/amqp.py:292 +#: ironic/openstack/common/rpc/amqp.py:290 #, python-format msgid "unpacked context: %s" -msgstr "" +msgstr "已解壓縮環境定義:%s" -#: ironic/openstack/common/rpc/amqp.py:338 +#: ironic/openstack/common/rpc/amqp.py:342 #, python-format msgid "UNIQUE_ID is %s." -msgstr "" +msgstr "UNIQUE_ID 為 %s。" -#: ironic/openstack/common/rpc/amqp.py:407 +#: ironic/openstack/common/rpc/amqp.py:435 #, python-format msgid "received %s" -msgstr "" +msgstr "收到 %s" -#: ironic/openstack/common/rpc/amqp.py:415 +#: ironic/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "訊息沒有方法:%s" -#: ironic/openstack/common/rpc/amqp.py:416 +#: ironic/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" +msgstr "訊息沒有方法:%s" -#: ironic/openstack/common/rpc/amqp.py:444 -#: ironic/openstack/common/rpc/impl_zmq.py:286 +#: ironic/openstack/common/rpc/amqp.py:472 +#: ironic/openstack/common/rpc/impl_zmq.py:280 #, python-format msgid "Expected exception during message handling (%s)" -msgstr "" +msgstr "處理訊息期間發生預期的異常狀況 (%s)" -#: ironic/openstack/common/rpc/amqp.py:452 -#: ironic/openstack/common/rpc/impl_zmq.py:292 +#: ironic/openstack/common/rpc/amqp.py:480 +#: ironic/openstack/common/rpc/impl_zmq.py:286 msgid "Exception during message handling" -msgstr "" +msgstr "處理訊息期間發生異常狀況" -#: ironic/openstack/common/rpc/amqp.py:587 +#: ironic/openstack/common/rpc/amqp.py:554 #, python-format msgid "Making synchronous call on %s ..." -msgstr "" +msgstr "正在對 %s 進行同步呼叫..." -#: ironic/openstack/common/rpc/amqp.py:590 +#: ironic/openstack/common/rpc/amqp.py:557 #, python-format msgid "MSG_ID is %s" -msgstr "" +msgstr "MSG_ID 為 %s" -#: ironic/openstack/common/rpc/amqp.py:624 +#: ironic/openstack/common/rpc/amqp.py:583 #, python-format msgid "Making asynchronous cast on %s..." -msgstr "" +msgstr "正在對 %s 進行非同步強制轉型..." -#: ironic/openstack/common/rpc/amqp.py:633 +#: ironic/openstack/common/rpc/amqp.py:592 msgid "Making asynchronous fanout cast..." -msgstr "" +msgstr "正在進行非同步展開強制轉型..." -#: ironic/openstack/common/rpc/amqp.py:661 +#: ironic/openstack/common/rpc/amqp.py:620 #, python-format msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "正在傳送關於 %(topic)s 的 %(event_type)s" -#: ironic/openstack/common/rpc/common.py:75 +#: ironic/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "發生與 RPC 相關的不明異常狀況。" -#: ironic/openstack/common/rpc/common.py:105 +#: ironic/openstack/common/rpc/common.py:106 #, python-format msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." -msgstr "" +msgstr "遠端錯誤:%(exc_type)s %(value)s\n%(traceback)s。" -#: ironic/openstack/common/rpc/common.py:122 +#: ironic/openstack/common/rpc/common.py:123 #, python-format msgid "" -"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" -" \"%(method)s\" info: \"%(info)s\"" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method: " +"\"%(method)s\" info: \"%(info)s\"" msgstr "" -#: ironic/openstack/common/rpc/common.py:138 -#: ironic/openstack/common/rpc/common.py:139 #: ironic/openstack/common/rpc/common.py:140 +#: ironic/openstack/common/rpc/common.py:141 +#: ironic/openstack/common/rpc/common.py:142 msgid "" -msgstr "" +msgstr "<未知>" -#: ironic/openstack/common/rpc/common.py:144 +#: ironic/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "發現重複的訊息 (%(msg_id)s)。正在跳過該訊息。" -#: ironic/openstack/common/rpc/common.py:148 +#: ironic/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "重複使用 RPC 連線無效。" -#: ironic/openstack/common/rpc/common.py:152 +#: ironic/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "此端點不支援所指定的 RPC 版本 %(version)s。" -#: ironic/openstack/common/rpc/common.py:157 +#: ironic/openstack/common/rpc/common.py:159 #, python-format msgid "" -"Specified RPC envelope version, %(version)s, not supported by this " -"endpoint." -msgstr "" +"Specified RPC envelope version, %(version)s, not supported by this endpoint." +msgstr "此端點不支援所指定的 RPC 封套版本 %(version)s。" -#: ironic/openstack/common/rpc/common.py:162 +#: ironic/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: ironic/openstack/common/rpc/common.py:285 -#, python-format -msgid "Failed to sanitize %(item)s. Key error %(err)s" -msgstr "" - -#: ironic/openstack/common/rpc/common.py:307 +#: ironic/openstack/common/rpc/common.py:292 #, python-format msgid "Returning exception %s to caller" +msgstr "正在將異常狀況 %s 傳回至呼叫程式" + +#: ironic/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:169 -#: ironic/openstack/common/rpc/impl_qpid.py:133 -msgid "Failed to process message... skipping it." +#: ironic/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." msgstr "" -#: ironic/openstack/common/rpc/impl_kombu.py:480 +#: ironic/openstack/common/rpc/impl_kombu.py:495 #, python-format msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "正在重新連接至 %(hostname)s:%(port)d 上的 AMQP 伺服器" -#: ironic/openstack/common/rpc/impl_kombu.py:502 +#: ironic/openstack/common/rpc/impl_kombu.py:517 #, python-format msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" +msgstr "已連接至 %(hostname)s:%(port)d 上的 AMQP 伺服器" -#: ironic/openstack/common/rpc/impl_kombu.py:539 +#: ironic/openstack/common/rpc/impl_kombu.py:554 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" -msgstr "" +msgstr "嘗試 %(max_retries)d 次之後,仍無法連接至 %(hostname)s:%(port)d 上的 AMQP 伺服器:%(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:555 +#: ironic/openstack/common/rpc/impl_kombu.py:568 #, python-format msgid "" "AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " "again in %(sleep_time)d seconds." -msgstr "" +msgstr "無法抵達 %(hostname)s:%(port)d 上的 AMQP 伺服器:%(err_str)s。將要在 %(sleep_time)d 秒鐘後重試。" -#: ironic/openstack/common/rpc/impl_kombu.py:609 -#: ironic/openstack/common/rpc/impl_qpid.py:404 +#: ironic/openstack/common/rpc/impl_kombu.py:622 +#: ironic/openstack/common/rpc/impl_qpid.py:573 #, python-format msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" +msgstr "無法給主題 '%(topic)s' 宣告消費者:%(err_str)s" -#: ironic/openstack/common/rpc/impl_kombu.py:627 -#: ironic/openstack/common/rpc/impl_qpid.py:419 +#: ironic/openstack/common/rpc/impl_kombu.py:640 +#: ironic/openstack/common/rpc/impl_qpid.py:588 #, python-format msgid "Timed out waiting for RPC response: %s" -msgstr "" +msgstr "等候 RPC 回應時發生逾時:%s" -#: ironic/openstack/common/rpc/impl_kombu.py:631 -#: ironic/openstack/common/rpc/impl_qpid.py:423 +#: ironic/openstack/common/rpc/impl_kombu.py:644 +#: ironic/openstack/common/rpc/impl_qpid.py:592 #, python-format msgid "Failed to consume message from queue: %s" -msgstr "" +msgstr "無法耗用來自佇列的訊息:%s" -#: ironic/openstack/common/rpc/impl_kombu.py:670 -#: ironic/openstack/common/rpc/impl_qpid.py:458 +#: ironic/openstack/common/rpc/impl_kombu.py:683 +#: ironic/openstack/common/rpc/impl_qpid.py:627 #, python-format msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "無法將訊息發佈至主題 '%(topic)s':%(err_str)s" + +#: ironic/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: ironic/openstack/common/rpc/impl_qpid.py:352 +#: ironic/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "無法處理訊息... 正在跳過。" + +#: ironic/openstack/common/rpc/impl_qpid.py:515 #, python-format msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" +msgstr "無法連接至 AMQP 伺服器:%(e)s。休眠 %(delay)s 秒鐘" -#: ironic/openstack/common/rpc/impl_qpid.py:358 +#: ironic/openstack/common/rpc/impl_qpid.py:521 #, python-format msgid "Connected to AMQP server on %s" -msgstr "" +msgstr "已連接至 %s 上的 AMQP 伺服器" -#: ironic/openstack/common/rpc/impl_qpid.py:371 +#: ironic/openstack/common/rpc/impl_qpid.py:534 msgid "Re-established AMQP queues" -msgstr "" +msgstr "已重新建立 AMQP 佇列" -#: ironic/openstack/common/rpc/impl_qpid.py:431 +#: ironic/openstack/common/rpc/impl_qpid.py:600 msgid "Error processing message. Skipping it." -msgstr "" +msgstr "處理訊息時發生錯誤。正在跳過。" -#: ironic/openstack/common/rpc/impl_zmq.py:97 +#: ironic/openstack/common/rpc/impl_zmq.py:96 msgid "JSON serialization failed." -msgstr "" +msgstr "JSON 序列化失敗。" -#: ironic/openstack/common/rpc/impl_zmq.py:104 +#: ironic/openstack/common/rpc/impl_zmq.py:101 #, python-format msgid "Deserializing: %s" -msgstr "" +msgstr "正在解除序列化:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:140 +#: ironic/openstack/common/rpc/impl_zmq.py:136 #, python-format msgid "Connecting to %(addr)s with %(type)s" -msgstr "" +msgstr "正在連接至 %(addr)s (%(type)s)" -#: ironic/openstack/common/rpc/impl_zmq.py:141 +#: ironic/openstack/common/rpc/impl_zmq.py:137 #, python-format msgid "-> Subscribed to %(subscribe)s" -msgstr "" +msgstr "-> 已訂閱 %(subscribe)s" -#: ironic/openstack/common/rpc/impl_zmq.py:142 +#: ironic/openstack/common/rpc/impl_zmq.py:138 #, python-format msgid "-> bind: %(bind)s" -msgstr "" +msgstr "-> 連結:%(bind)s" -#: ironic/openstack/common/rpc/impl_zmq.py:150 +#: ironic/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" +msgstr "無法開啟 Socket。" -#: ironic/openstack/common/rpc/impl_zmq.py:162 +#: ironic/openstack/common/rpc/impl_zmq.py:158 #, python-format msgid "Subscribing to %s" +msgstr "正在訂閱 %s" + +#: ironic/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:204 +#: ironic/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "無法在此 Socket 上接收。" -#: ironic/openstack/common/rpc/impl_zmq.py:209 +#: ironic/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" +msgstr "無法在此 Socket 上傳送。" -#: ironic/openstack/common/rpc/impl_zmq.py:273 +#: ironic/openstack/common/rpc/impl_zmq.py:267 #, python-format msgid "Running func with context: %s" -msgstr "" +msgstr "正在以環境定義 %s 執行函數" -#: ironic/openstack/common/rpc/impl_zmq.py:311 +#: ironic/openstack/common/rpc/impl_zmq.py:305 msgid "Sending reply" -msgstr "" +msgstr "正在傳送回覆" -#: ironic/openstack/common/rpc/impl_zmq.py:345 +#: ironic/openstack/common/rpc/impl_zmq.py:339 msgid "RPC message did not include method." -msgstr "" +msgstr "RPC 訊息沒有包含方法。" -#: ironic/openstack/common/rpc/impl_zmq.py:380 +#: ironic/openstack/common/rpc/impl_zmq.py:371 msgid "Registering reactor" -msgstr "" +msgstr "正在登錄反應程式" -#: ironic/openstack/common/rpc/impl_zmq.py:392 +#: ironic/openstack/common/rpc/impl_zmq.py:383 msgid "In reactor registered" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:407 -msgid "Out reactor registered" -msgstr "" +msgstr "已登錄輸入反應程式" -#: ironic/openstack/common/rpc/impl_zmq.py:411 +#: ironic/openstack/common/rpc/impl_zmq.py:388 msgid "Consuming socket" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:453 -#, python-format -msgid "CONSUMER GOT %s" -msgstr "" +msgstr "正在耗用 Socket" -#: ironic/openstack/common/rpc/impl_zmq.py:465 +#: ironic/openstack/common/rpc/impl_zmq.py:438 #, python-format msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "正在給主題 %s 建立 Proxy" -#: ironic/openstack/common/rpc/impl_zmq.py:471 +#: ironic/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:496 -#, python-format -msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s" -msgstr "" +msgstr "主題包含危險字元。" -#: ironic/openstack/common/rpc/impl_zmq.py:505 +#: ironic/openstack/common/rpc/impl_zmq.py:476 msgid "Topic socket file creation failed." -msgstr "" +msgstr "建立主題 Socket 檔案時失敗。" -#: ironic/openstack/common/rpc/impl_zmq.py:510 +#: ironic/openstack/common/rpc/impl_zmq.py:482 #, python-format -msgid "ROUTER RELAY-OUT QUEUED %(data)s" -msgstr "" +msgid "" +"Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "主題 %(topic)s 的本端個別主題待辦事項緩衝區已滿。正在捨棄訊息。" -#: ironic/openstack/common/rpc/impl_zmq.py:513 +#: ironic/openstack/common/rpc/impl_zmq.py:498 #, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgid "Required IPC directory does not exist at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:532 +#: ironic/openstack/common/rpc/impl_zmq.py:507 #, python-format -msgid "Could not create IPC directory %s" +msgid "Permission denied to IPC directory at %s" msgstr "" -#: ironic/openstack/common/rpc/impl_zmq.py:542 +#: ironic/openstack/common/rpc/impl_zmq.py:510 msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" +msgstr "無法建立 ZeroMQ 接收端常駐程式。Socket 可能已在使用中。" -#: ironic/openstack/common/rpc/impl_zmq.py:576 +#: ironic/openstack/common/rpc/impl_zmq.py:544 #, python-format msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: ironic/openstack/common/rpc/impl_zmq.py:578 -#, python-format -msgid "ROUTER RELAY-OUT %(data)s" -msgstr "" +msgstr "消費者已收到資料:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:600 +#: ironic/openstack/common/rpc/impl_zmq.py:563 msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" +msgstr "ZMQ 封套版本不受支援或不明。" -#: ironic/openstack/common/rpc/impl_zmq.py:628 +#: ironic/openstack/common/rpc/impl_zmq.py:591 msgid "Skipping topic registration. Already registered." -msgstr "" +msgstr "正在跳過主題登錄。已登錄。" -#: ironic/openstack/common/rpc/impl_zmq.py:635 +#: ironic/openstack/common/rpc/impl_zmq.py:598 #, python-format msgid "Consumer is a zmq.%s" -msgstr "" +msgstr "消費者是 zmq.%s" -#: ironic/openstack/common/rpc/impl_zmq.py:687 +#: ironic/openstack/common/rpc/impl_zmq.py:650 msgid "Creating payload" -msgstr "" +msgstr "正在建立有效負載" -#: ironic/openstack/common/rpc/impl_zmq.py:700 +#: ironic/openstack/common/rpc/impl_zmq.py:663 msgid "Creating queue socket for reply waiter" -msgstr "" +msgstr "正在給回覆等待程式建立佇列 Socket" -#: ironic/openstack/common/rpc/impl_zmq.py:713 +#: ironic/openstack/common/rpc/impl_zmq.py:676 msgid "Sending cast" -msgstr "" +msgstr "正在傳送強制轉型" -#: ironic/openstack/common/rpc/impl_zmq.py:716 +#: ironic/openstack/common/rpc/impl_zmq.py:679 msgid "Cast sent; Waiting reply" -msgstr "" +msgstr "已傳送強制轉型;正在等待回覆" -#: ironic/openstack/common/rpc/impl_zmq.py:719 +#: ironic/openstack/common/rpc/impl_zmq.py:682 #, python-format msgid "Received message: %s" -msgstr "" +msgstr "接收的訊息:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:720 +#: ironic/openstack/common/rpc/impl_zmq.py:683 msgid "Unpacking response" -msgstr "" +msgstr "正在解壓縮回應" -#: ironic/openstack/common/rpc/impl_zmq.py:729 +#: ironic/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "傳回了不支援或不明的 ZMQ 封套。" -#: ironic/openstack/common/rpc/impl_zmq.py:736 +#: ironic/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" +msgstr "RPC 訊息無效。" -#: ironic/openstack/common/rpc/impl_zmq.py:760 +#: ironic/openstack/common/rpc/impl_zmq.py:722 #, python-format msgid "%(msg)s" -msgstr "" +msgstr "%(msg)s" -#: ironic/openstack/common/rpc/impl_zmq.py:763 +#: ironic/openstack/common/rpc/impl_zmq.py:725 #, python-format msgid "Sending message(s) to: %s" -msgstr "" +msgstr "正在將訊息傳送至:%s" -#: ironic/openstack/common/rpc/impl_zmq.py:767 +#: ironic/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "符合程式找不到結果。不進行強制轉型。" -#: ironic/openstack/common/rpc/impl_zmq.py:770 +#: ironic/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "沒有來自符合程式的相符項。" -#: ironic/openstack/common/rpc/impl_zmq.py:852 +#: ironic/openstack/common/rpc/impl_zmq.py:814 #, python-format msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" msgstr "" -#: ironic/openstack/common/rpc/matchmaker.py:47 +#: ironic/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "符合程式找不到相符項。" -#: ironic/openstack/common/rpc/matchmaker.py:83 +#: ironic/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" +msgstr "符合程式沒有實作登錄或活動訊號。" -#: ironic/openstack/common/rpc/matchmaker.py:233 +#: ironic/openstack/common/rpc/matchmaker.py:216 #, python-format msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "已取消登錄符合程式:%(key)s, %(host)s" -#: ironic/openstack/common/rpc/matchmaker.py:245 +#: ironic/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" +msgstr "在啟動活動訊號之前登錄。" -#: ironic/openstack/common/rpc/matchmaker_ring.py:81 -#: ironic/openstack/common/rpc/matchmaker_ring.py:99 +#: ironic/openstack/common/rpc/matchmaker_ring.py:75 +#: ironic/openstack/common/rpc/matchmaker_ring.py:93 #, python-format msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" +msgstr "沒有索引鍵給主題 '%s' 定義主機,請參閱 ringfile" -#: ironic/openstack/common/rpc/service.py:48 +#: ironic/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "正在為服務 %s 建立消費者連線" -#: ironic/tests/db/sqlalchemy/test_migrations.py:145 -#, python-format -msgid "config_path is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:251 -#, python-format -msgid "latest version is %s" -msgstr "" - -#: ironic/tests/db/sqlalchemy/test_migrations.py:322 +#: ironic/tests/db/sqlalchemy/test_migrations.py:312 #, python-format msgid "Failed to migrate to version %(version)s on engine %(engine)s" msgstr "" - -#~ msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..." -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "IPMI credentials not supplied to IPMI driver." -#~ msgstr "" - -#~ msgid "Unexpected error while running command." -#~ msgstr "" - -#~ msgid "Does not support hyphens as separator: %s" -#~ msgstr "" - -#~ msgid "Invalid MAC address format: %s" -#~ msgstr "" - -#~ msgid "MAC address already exists." -#~ msgstr "" - -#~ msgid "Missing %s attribute(s)" -#~ msgstr "" - -#~ msgid "Attribute(s): %s can not be removed" -#~ msgstr "" - -#~ msgid "parent device '%s' not found" -#~ msgstr "" - -#~ msgid "root device '%s' not found" -#~ msgstr "" - -#~ msgid "swap device '%s' not found" -#~ msgstr "" - -#~ msgid "Can not update node %s while a state transition is in progress." -#~ msgstr "" - -#~ msgid "Invalid patch format: %s" -#~ msgstr "" - -#~ msgid "Operation not supported: %s" -#~ msgstr "" - -#~ msgid "Invalid path: %s" -#~ msgstr "" - -#~ msgid "Adding an additional attribute (%s) to the resource is not allowed" -#~ msgstr "" - -#~ msgid "UUIDs can not be removed or replaced" -#~ msgstr "" - -#~ msgid "Driver %(driver)s for node %(node)s does not support %(extension)s." -#~ msgstr "" - -#~ msgid "RPC call_driver called for node %s." -#~ msgstr "" - -#~ msgid "Node %(node_id)s deploy error message: %(error)s" -#~ msgstr "" - -#~ msgid "start deployment for node %(node_id)s, params %(params)s" -#~ msgstr "" - -#~ msgid "deployment to node %s failed" -#~ msgstr "" - -#~ msgid "Deploy error: \"%(error)s\" for node %(node_id)s" -#~ msgstr "" - -#~ msgid "deployment to node %s done" -#~ msgstr "" - -#~ msgid "User does not have admin privileges" -#~ msgstr "" - -#~ msgid "Policy doesn't allow %(action)s to be performed." -#~ msgstr "" - -#~ msgid "Unacceptable CPU info: %(reason)s" -#~ msgstr "" - -#~ msgid "%(address)s is not a valid IP v4/6 address." -#~ msgstr "" - -#~ msgid "Disk format %(disk_format)s is not acceptable" -#~ msgstr "" - -#~ msgid "No disk at %(location)s" -#~ msgstr "" - -#~ msgid "Host %(host)s could not be found." -#~ msgstr "" - -#~ msgid "Console %(console_id)s could not be found." -#~ msgstr "" - -#~ msgid "File %(file_path)s could not be found." -#~ msgstr "" - -#~ msgid "No valid host was found. %(reason)s" -#~ msgstr "" - -#~ msgid "" -#~ "Unable to complete the requested action" -#~ " because node %(node)s is currently " -#~ "in use by another process." -#~ msgstr "" - -#~ msgid "" -#~ "Can not change power state because " -#~ "node %(node)s is not fully configured." -#~ msgstr "" - -#~ msgid "Requested version of OpenStack Images API is not available." -#~ msgstr "" - -#~ msgid "Fetching kernel and ramdisk for instance %s" -#~ msgstr "" - -#~ msgid "Fetching image %(ami)s for instance %(name)s" -#~ msgstr "" - diff -Nru ironic-2014.1~b3/ironic/nova/compute/manager.py ironic-2014.1~rc1/ironic/nova/compute/manager.py --- ironic-2014.1~b3/ironic/nova/compute/manager.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/compute/manager.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,75 @@ +# coding=utf-8 +# +# Copyright 2014 Red Hat, Inc. +# 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. + +"""Short term workaround for friction in the Nova compute manager with Ironic. + +https://etherpad.openstack.org/p/ironic-nova-friction contains current design +work. The goal here is to generalise the areas where n-c talking to a clustered +hypervisor has issues, and long term fold them into the main ComputeManager. +""" + +from nova.compute import manager +import nova.context + + +class ClusteredComputeManager(manager.ComputeManager): + + def init_host(self): + """Initialization for a clustered compute service.""" + self.driver.init_host(host=self.host) + # Not used currently. + # context = nova.context.get_admin_context() + # instances = instance_obj.InstanceList.get_by_host( + # context, self.host, expected_attrs=['info_cache']) + + # defer_iptables_apply is moot for clusters - no local iptables + # if CONF.defer_iptables_apply: + # self.driver.filter_defer_apply_on() + + self.init_virt_events() + + # try: + # evacuation is moot for a clustered hypervisor + # # checking that instance was not already evacuated to other host + # self._destroy_evacuated_instances(context) + # Don't run _init_instance until we solve the partitioning problem + # - with N n-cpu's all claiming the same hostname, running + # _init_instance here would lead to race conditions where each runs + # _init_instance concurrently. + # for instance in instances: + # self._init_instance(context, instance) + # finally: + # defer_iptables_apply is moot for clusters - no local iptables + # if CONF.defer_iptables_apply: + # self.driver.filter_defer_apply_off() + + def pre_start_hook(self): + """After the service is initialized, but before we fully bring + the service up by listening on RPC queues, make sure to update + our available resources (and indirectly our available nodes). + """ + # This is an optimisation to immediately advertise resources but + # the periodic task will update them eventually anyway, so ignore + # errors as they may be transient (e.g. the scheduler isn't + # available...). XXX(lifeless) this applies to all ComputeManagers + # and once I feature freeze is over we should push that to nova + # directly. + try: + self.update_available_resource(nova.context.get_admin_context()) + except Exception: + pass diff -Nru ironic-2014.1~b3/ironic/nova/scheduler/filters/exact_core_filter.py ironic-2014.1~rc1/ironic/nova/scheduler/filters/exact_core_filter.py --- ironic-2014.1~b3/ironic/nova/scheduler/filters/exact_core_filter.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/scheduler/filters/exact_core_filter.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,50 @@ +# Copyright (c) 2014 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.openstack.common.gettextutils import _ +from nova.openstack.common import log as logging +from nova.scheduler import filters + +LOG = logging.getLogger(__name__) + + +class ExactCoreFilter(filters.BaseHostFilter): + + def host_passes(self, host_state, filter_properties): + """Return True if host has sufficient CPU cores.""" + instance_type = filter_properties.get('instance_type') + if not instance_type: + return True + + if not host_state.vcpus_total: + # Fail safe + LOG.warning(_("VCPUs not set; assuming CPU collection broken")) + return True + + required_vcpus = instance_type['vcpus'] + usable_vcpus = host_state.vcpus_total - host_state.vcpus_used + + if required_vcpus != usable_vcpus: + LOG.debug(_("%(host_state)s does not have %(requested_vcpus)s " + "cores of usable vcpu, it only has %(usable_vcpus)s " + "cores of usable vcpu."), + {'host_state': host_state, + 'requested_vcpus': required_vcpus, + 'usable_vcpus': usable_vcpus}) + return False + + return True diff -Nru ironic-2014.1~b3/ironic/nova/scheduler/filters/exact_disk_filter.py ironic-2014.1~rc1/ironic/nova/scheduler/filters/exact_disk_filter.py --- ironic-2014.1~b3/ironic/nova/scheduler/filters/exact_disk_filter.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/scheduler/filters/exact_disk_filter.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,41 @@ +# Copyright (c) 2014 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.openstack.common.gettextutils import _ +from nova.openstack.common import log as logging +from nova.scheduler import filters + +LOG = logging.getLogger(__name__) + + +class ExactDiskFilter(filters.BaseHostFilter): + """Exact Disk Filter.""" + + def host_passes(self, host_state, filter_properties): + """Filter based on disk usage.""" + instance_type = filter_properties.get('instance_type') + requested_disk = (1024 * (instance_type['root_gb'] + + instance_type['ephemeral_gb']) + + instance_type['swap']) + + if requested_disk != host_state.free_disk_mb: + LOG.debug(_("%(host_state)s does not have %(requested_disk)s MB " + "usable disk, it only has %(usable_disk_mb)s MB usable " + "disk."), {'host_state': host_state, + 'requested_disk': requested_disk, + 'usable_disk_mb': host_state.free_disk_mb}) + return False + + return True diff -Nru ironic-2014.1~b3/ironic/nova/scheduler/filters/exact_ram_filter.py ironic-2014.1~rc1/ironic/nova/scheduler/filters/exact_ram_filter.py --- ironic-2014.1~b3/ironic/nova/scheduler/filters/exact_ram_filter.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/scheduler/filters/exact_ram_filter.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,37 @@ +# Copyright (c) 2014 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.openstack.common.gettextutils import _ +from nova.openstack.common import log as logging +from nova.scheduler import filters + +LOG = logging.getLogger(__name__) + + +class ExactRamFilter(filters.BaseHostFilter): + + 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'] + if requested_ram != host_state.free_ram_mb: + LOG.debug(_("%(host_state)s does not have %(requested_ram)s MB " + "usable ram, it only has %(usable_ram)s MB usable ram."), + {'host_state': host_state, + 'requested_ram': requested_ram, + 'usable_ram': host_state.free_ram_mb}) + return False + + return True diff -Nru ironic-2014.1~b3/ironic/nova/scheduler/ironic_host_manager.py ironic-2014.1~rc1/ironic/nova/scheduler/ironic_host_manager.py --- ironic-2014.1~b3/ironic/nova/scheduler/ironic_host_manager.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/scheduler/ironic_host_manager.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,111 @@ +# Copyright (c) 2014 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. + +""" +Ironic host manager. + +This host manager will consume all cpu's, disk space, and +ram from a host / node as it is supporting Baremetal hosts, which can not be +subdivided into multiple instances. +""" +from oslo.config import cfg + +from nova.openstack.common import log as logging +from nova.openstack.common import timeutils +from nova.scheduler import host_manager + +host_manager_opts = [ + cfg.ListOpt('baremetal_scheduler_default_filters', + default=[ + 'RetryFilter', + 'AvailabilityZoneFilter', + 'ComputeFilter', + 'ComputeCapabilitiesFilter', + 'ImagePropertiesFilter', + 'ExactRamFilter', + 'ExactDiskFilter', + 'ExactCoreFilter', + ], + help='Which filter class names to use for filtering ' + 'baremetal hosts when not specified in the request.'), + cfg.BoolOpt('scheduler_use_baremetal_filters', + default=False, + help='Flag to decide whether to use ' + 'baremetal_scheduler_default_filters or not.'), + + ] + +CONF = cfg.CONF +CONF.register_opts(host_manager_opts) + +LOG = logging.getLogger(__name__) + + +class IronicNodeState(host_manager.HostState): + """Mutable and immutable information tracked for a host. + This is an attempt to remove the ad-hoc data structures + previously used and lock down access. + """ + + def update_from_compute_node(self, compute): + """Update information about a host from its compute_node info.""" + all_ram_mb = compute['memory_mb'] + + free_disk_mb = compute['free_disk_gb'] * 1024 + free_ram_mb = compute['free_ram_mb'] + + self.free_ram_mb = free_ram_mb + self.total_usable_ram_mb = all_ram_mb + self.free_disk_mb = free_disk_mb + self.total_usable_disk_gb = compute['local_gb'] + self.vcpus_total = compute['vcpus'] + self.vcpus_used = compute['vcpus_used'] + + self.updated = compute['updated_at'] + + def consume_from_instance(self, instance): + """Consume nodes entire resources regardless of instance request.""" + self.free_ram_mb = 0 + self.free_disk_mb = 0 + self.vcpus_used = self.vcpus_total + self.updated = timeutils.utcnow() + + +def new_host_state(self, host, node, capabilities=None, service=None): + """Returns an instance of IronicNodeState or HostState according to + capabilities. If 'ironic_driver' is in capabilities, it returns an + instance of IronicHostState. If not, returns an instance of HostState. + """ + if capabilities is None: + capabilities = {} + cap = capabilities.get('compute', {}) + if bool(cap.get('ironic_driver')): + return IronicNodeState(host, node, capabilities, service) + else: + return host_manager.HostState(host, node, capabilities, service) + + +class IronicHostManager(host_manager.HostManager): + """Ironic HostManager class.""" + + # Override. + # Yes, this is not a class, and it is OK + host_state_cls = new_host_state + + def __init__(self): + super(IronicHostManager, self).__init__() + if CONF.scheduler_use_baremetal_filters: + baremetal_default = CONF.baremetal_scheduler_default_filters + CONF.scheduler_default_filters = baremetal_default diff -Nru ironic-2014.1~b3/ironic/nova/tests/scheduler/ironic_fakes.py ironic-2014.1~rc1/ironic/nova/tests/scheduler/ironic_fakes.py --- ironic-2014.1~b3/ironic/nova/tests/scheduler/ironic_fakes.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/tests/scheduler/ironic_fakes.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,87 @@ +# Copyright 2014 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 nodes for Ironic host manager tests. +""" + + +COMPUTE_NODES = [ + dict(id=1, local_gb=10, memory_mb=1024, vcpus=1, + vcpus_used=0, local_gb_used=0, memory_mb_used=0, + updated_at=None, cpu_info='baremetal cpu', + service=dict(host='host1', disabled=False), + hypervisor_hostname='node1uuid', host_ip='127.0.0.1', + hypervisor_version=1, hypervisor_type='ironic', + stats=dict(ironic_driver= + "nova.virt.ironic.driver.IronicDriver", + cpu_arch='i386'), + supported_instances='[["i386", "baremetal", "baremetal"]]', + free_disk_gb=10, free_ram_mb=1024), + dict(id=2, local_gb=20, memory_mb=2048, vcpus=1, + vcpus_used=0, local_gb_used=0, memory_mb_used=0, + updated_at=None, cpu_info='baremetal cpu', + service=dict(host='host2', disabled=True), + hypervisor_hostname='node2uuid', host_ip='127.0.0.1', + hypervisor_version=1, hypervisor_type='ironic', + stats=dict(ironic_driver= + "nova.virt.ironic.driver.IronicDriver", + cpu_arch='i386'), + supported_instances='[["i386", "baremetal", "baremetal"]]', + free_disk_gb=20, free_ram_mb=2048), + dict(id=3, local_gb=30, memory_mb=3072, vcpus=1, + vcpus_used=0, local_gb_used=0, memory_mb_used=0, + updated_at=None, cpu_info='baremetal cpu', + service=dict(host='host3', disabled=False), + hypervisor_hostname='node3uuid', host_ip='127.0.0.1', + hypervisor_version=1, hypervisor_type='ironic', + stats=dict(ironic_driver= + "nova.virt.ironic.driver.IronicDriver", + cpu_arch='i386'), + supported_instances='[["i386", "baremetal", "baremetal"]]', + free_disk_gb=30, free_ram_mb=3072), + dict(id=4, local_gb=40, memory_mb=4096, vcpus=1, + vcpus_used=0, local_gb_used=0, memory_mb_used=0, + updated_at=None, cpu_info='baremetal cpu', + service=dict(host='host4', disabled=False), + hypervisor_hostname='node4uuid', host_ip='127.0.0.1', + hypervisor_version=1, hypervisor_type='ironic', + stats=dict(ironic_driver= + "nova.virt.ironic.driver.IronicDriver", + cpu_arch='i386'), + supported_instances='[["i386", "baremetal", "baremetal"]]', + free_disk_gb=40, free_ram_mb=4096), + # Broken entry + dict(id=5, local_gb=50, memory_mb=5120, vcpus=1, service=None, + cpu_info='baremetal cpu', + stats=dict(ironic_driver= + "nova.virt.ironic.driver.IronicDriver", + cpu_arch='i386'), + supported_instances='[["i386", "baremetal", "baremetal"]]', + free_disk_gb=50, free_ram_mb=5120), +] + + +IRONIC_SERVICE_STATE = { + ('host1', 'node1uuid'): {'compute': {'ironic_driver': + "nova.virt.ironic.driver.IronicDriver"}}, + ('host2', 'node2uuid'): {'compute': {'ironic_driver': + "nova.virt.ironic.driver.IronicDriver"}}, + ('host3', 'node3uuid'): {'compute': {'ironic_driver': + "nova.virt.ironic.driver.IronicDriver"}}, + ('host4', 'node4uuid'): {'compute': {'ironic_driver': + "nova.virt.ironic.driver.IronicDriver"}}, + ('host5', 'node5uuid'): {'compute': {'ironic_driver': + "nova.virt.ironic.driver.IronicDriver"}}, +} diff -Nru ironic-2014.1~b3/ironic/nova/tests/scheduler/test_ironic_host_manager.py ironic-2014.1~rc1/ironic/nova/tests/scheduler/test_ironic_host_manager.py --- ironic-2014.1~b3/ironic/nova/tests/scheduler/test_ironic_host_manager.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/tests/scheduler/test_ironic_host_manager.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,426 @@ +# Copyright (c) 2014 OpenStack Foundation +# 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 IronicHostManager +""" + +from nova import db +from nova import exception +from nova.scheduler import filters +from nova.scheduler import ironic_host_manager +from nova import test +from nova.tests.scheduler import ironic_fakes + + +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 IronicHostManagerTestCase(test.NoDBTestCase): + """Test case for IronicHostManager class.""" + + def setUp(self): + super(IronicHostManagerTestCase, self).setUp() + self.host_manager = ironic_host_manager.IronicHostManager() + self.fake_hosts = [ironic_host_manager.IronicNodeState( + 'fake_host%s' % x, 'fake-node') for x in range(1, 5)] + self.fake_hosts += [ironic_host_manager.IronicNodeState( + 'fake_multihost', 'fake-node%s' % x) for x in range(1, 5)] + + def test_get_all_host_states(self): + # Ensure .service is set and we have the values we expect to. + context = 'fake_context' + + self.mox.StubOutWithMock(db, 'compute_node_get_all') + db.compute_node_get_all(context).AndReturn(ironic_fakes.COMPUTE_NODES) + self.mox.ReplayAll() + + self.host_manager.service_states = ironic_fakes.IRONIC_SERVICE_STATE + 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 range(4): + compute_node = ironic_fakes.COMPUTE_NODES[i] + host = compute_node['service']['host'] + node = compute_node['hypervisor_hostname'] + state_key = (host, node) + self.assertEqual(compute_node['service'], + host_states_map[state_key].service) + # check we have the values we think we should. + self.assertEqual(1024, + host_states_map[('host1', 'node1uuid')].free_ram_mb) + self.assertEqual(10240, + host_states_map[('host1', 'node1uuid')].free_disk_mb) + self.assertEqual(2048, + host_states_map[('host2', 'node2uuid')].free_ram_mb) + self.assertEqual(20480, + host_states_map[('host2', 'node2uuid')].free_disk_mb) + self.assertEqual(3072, + host_states_map[('host3', 'node3uuid')].free_ram_mb) + self.assertEqual(30720, + host_states_map[('host3', 'node3uuid')].free_disk_mb) + self.assertEqual(4096, + host_states_map[('host4', 'node4uuid')].free_ram_mb) + self.assertEqual(40960, + host_states_map[('host4', 'node4uuid')].free_disk_mb) + + +class IronicHostManagerChangedNodesTestCase(test.NoDBTestCase): + """Test case for IronicHostManager class.""" + + def setUp(self): + super(IronicHostManagerChangedNodesTestCase, self).setUp() + self.host_manager = ironic_host_manager.IronicHostManager() + self.fake_hosts = [ + ironic_host_manager.IronicNodeState('host1', 'node1uuid'), + ironic_host_manager.IronicNodeState('host2', 'node2uuid'), + ironic_host_manager.IronicNodeState('host3', 'node3uuid'), + ironic_host_manager.IronicNodeState('host4', 'node4uuid') + ] + self.compute_node = dict(id=1, local_gb=10, memory_mb=1024, vcpus=1, + vcpus_used=0, local_gb_used=0, memory_mb_used=0, + updated_at=None, cpu_info='baremetal cpu', + stats=dict(ironic_driver= + "nova.virt.ironic.driver.IronicDriver", + cpu_arch='i386'), + supported_instances= + '[["i386", "baremetal", "baremetal"]]', + free_disk_gb=10, free_ram_mb=1024) + + 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(ironic_fakes.COMPUTE_NODES) + self.mox.ReplayAll() + + self.host_manager.service_states = ironic_fakes.IRONIC_SERVICE_STATE + self.host_manager.get_all_host_states(context) + host_states_map = self.host_manager.host_state_map + self.assertEqual(4, len(host_states_map)) + + 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(ironic_fakes.COMPUTE_NODES) + # remove node4 for second call + running_nodes = [n for n in ironic_fakes.COMPUTE_NODES + if n.get('hypervisor_hostname') != 'node4uuid'] + db.compute_node_get_all(context).AndReturn(running_nodes) + self.mox.ReplayAll() + + self.host_manager.service_states = ironic_fakes.IRONIC_SERVICE_STATE + 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(3, len(host_states_map)) + + 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(ironic_fakes.COMPUTE_NODES) + # remove all nodes for second call + db.compute_node_get_all(context).AndReturn([]) + self.mox.ReplayAll() + + self.host_manager.service_states = ironic_fakes.IRONIC_SERVICE_STATE + 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(0, len(host_states_map)) + + def test_update_from_compute_node(self): + host = ironic_host_manager.IronicNodeState("fakehost", "fakenode") + host.update_from_compute_node(self.compute_node) + + self.assertEqual(1024, host.free_ram_mb) + self.assertEqual(1024, host.total_usable_ram_mb) + self.assertEqual(10240, host.free_disk_mb) + self.assertEqual(1, host.vcpus_total) + self.assertEqual(0, host.vcpus_used) + + def test_consume_identical_instance_from_compute(self): + host = ironic_host_manager.IronicNodeState("fakehost", "fakenode") + host.update_from_compute_node(self.compute_node) + + instance = dict(root_gb=10, ephemeral_gb=0, memory_mb=1024, vcpus=1) + host.consume_from_instance(instance) + + self.assertEqual(1, host.vcpus_used) + self.assertEqual(0, host.free_ram_mb) + self.assertEqual(0, host.free_disk_mb) + + def test_consume_larger_instance_from_compute(self): + host = ironic_host_manager.IronicNodeState("fakehost", "fakenode") + host.update_from_compute_node(self.compute_node) + + instance = dict(root_gb=20, ephemeral_gb=0, memory_mb=2048, vcpus=2) + host.consume_from_instance(instance) + + self.assertEqual(1, host.vcpus_used) + self.assertEqual(0, host.free_ram_mb) + self.assertEqual(0, host.free_disk_mb) + + def test_consume_smaller_instance_from_compute(self): + host = ironic_host_manager.IronicNodeState("fakehost", "fakenode") + host.update_from_compute_node(self.compute_node) + + instance = dict(root_gb=5, ephemeral_gb=0, memory_mb=512, vcpus=1) + host.consume_from_instance(instance) + + self.assertEqual(1, host.vcpus_used) + self.assertEqual(0, host.free_ram_mb) + self.assertEqual(0, host.free_disk_mb) + + +class IronicHostManagerTestFilters(test.NoDBTestCase): + """Test filters work for IronicHostManager.""" + + def setUp(self): + super(IronicHostManagerTestFilters, self).setUp() + self.host_manager = ironic_host_manager.IronicHostManager() + self.fake_hosts = [ironic_host_manager.IronicNodeState( + 'fake_host%s' % x, 'fake-node') for x in range(1, 5)] + self.fake_hosts += [ironic_host_manager.IronicNodeState( + 'fake_multihost', 'fake-node%s' % x) for x in range(1, 5)] + + 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(1, len(filter_classes)) + self.assertEqual('FakeFilterClass2', filter_classes[0].__name__) + + 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) diff -Nru ironic-2014.1~b3/ironic/nova/tests/virt/ironic/test_driver.py ironic-2014.1~rc1/ironic/nova/tests/virt/ironic/test_driver.py --- ironic-2014.1~b3/ironic/nova/tests/virt/ironic/test_driver.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/tests/virt/ironic/test_driver.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,833 @@ +# coding=utf-8 +# +# Copyright 2014 Red Hat, Inc. +# 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. + +"""Tests for the ironic driver.""" + +from ironicclient import client as ironic_client +from ironicclient import exc as ironic_exception +import mock +from oslo.config import cfg + +from nova.compute import power_state as nova_states +from nova import context as nova_context +from nova import exception +from nova.openstack.common import uuidutils +from nova import test +from nova.tests import fake_instance +from nova.tests import utils +from nova.virt import fake +from nova.virt.ironic import driver as ironic_driver +from nova.virt.ironic import ironic_states + + +CONF = cfg.CONF + +IRONIC_FLAGS = dict( + instance_type_extra_specs=['test_spec:test_value'], + api_version=1, + group='ironic', +) + + +def get_test_validation(**kw): + return type('interfaces', (object,), + {'power': kw.get('power', True), + 'deploy': kw.get('deploy', True), + 'console': kw.get('console', True), + 'rescue': kw.get('rescue', True)})() + + +def get_test_node(**kw): + return type('node', (object,), + {'uuid': kw.get('uuid', 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa'), + 'chassis_uuid': kw.get('chassis_uuid'), + 'power_state': kw.get('power_state', + ironic_states.NOSTATE), + 'target_power_state': kw.get('target_power_state', + ironic_states.NOSTATE), + 'provision_state': kw.get('provision_state', + ironic_states.NOSTATE), + 'target_provision_state': kw.get('target_provision_state', + ironic_states.NOSTATE), + 'last_error': kw.get('last_error'), + 'instance_uuid': kw.get('instance_uuid'), + 'driver': kw.get('driver', 'fake'), + 'driver_info': kw.get('driver_info', {}), + 'properties': kw.get('properties', {}), + 'reservation': kw.get('reservation'), + 'maintenance': kw.get('maintenance', False), + 'extra': kw.get('extra', {}), + 'updated_at': kw.get('created_at'), + 'created_at': kw.get('updated_at')})() + + +def get_test_port(**kw): + return type('port', (object,), + {'uuid': kw.get('uuid', 'gggggggg-uuuu-qqqq-ffff-llllllllllll'), + 'node_uuid': kw.get('node_uuid', get_test_node().uuid), + 'address': kw.get('address', 'FF:FF:FF:FF:FF:FF'), + 'extra': kw.get('extra', {}), + 'created_at': kw.get('created_at'), + 'updated_at': kw.get('updated_at')})() + + +class FakePortClient(object): + + def get(self, port_uuid): + pass + + def update(self, port_uuid, patch): + pass + + +class FakeNodeClient(object): + + def list(self): + return [] + + def get(self, node_uuid): + pass + + def get_by_instance_uuid(self, instance_uuid): + pass + + def list_ports(self, node_uuid): + pass + + def set_power_state(self, node_uuid, target): + pass + + def set_provision_state(self, node_uuid, target): + pass + + def update(self, node_uuid, patch): + pass + + def validate(self, node_uuid): + pass + + +class FakeClient(object): + + node = FakeNodeClient() + port = FakePortClient() + + +FAKE_CLIENT = FakeClient() + + +class IronicDriverTestCase(test.NoDBTestCase): + + def setUp(self): + super(IronicDriverTestCase, self).setUp() + self.flags(**IRONIC_FLAGS) + self.driver = ironic_driver.IronicDriver(None) + self.driver.virtapi = fake.FakeVirtAPI() + self.ctx = nova_context.get_admin_context() + # mock _get_client + self.mock_cli_patcher = mock.patch.object(self.driver, '_get_client') + self.mock_cli = self.mock_cli_patcher.start() + self.mock_cli.return_value = FAKE_CLIENT + + def stop_patchers(): + if self.mock_cli: + self.mock_cli_patcher.stop() + + self.addCleanup(stop_patchers) + + def test_validate_driver_loading(self): + self.assertIsInstance(self.driver, ironic_driver.IronicDriver) + + def test_get_hypervisor_type(self): + self.assertEqual(self.driver.get_hypervisor_type(), 'ironic') + + def test_get_hypervisor_version(self): + self.assertEqual(self.driver.get_hypervisor_version(), 1) + + def test__get_client_no_auth_token(self): + self.flags(admin_auth_token=None, group='ironic') + + # stop _get_client mock + self.mock_cli_patcher.stop() + self.mock_cli = None + + with mock.patch.object(nova_context, 'get_admin_context') as mock_ctx: + mock_ctx.return_value = self.ctx + with mock.patch.object(ironic_client, 'get_client') as mock_ir_cli: + self.driver._get_client() + expected = {'os_username': CONF.ironic.admin_username, + 'os_password': CONF.ironic.admin_password, + 'os_auth_url': CONF.ironic.admin_url, + 'os_tenant_name': CONF.ironic.admin_tenant_name, + 'os_service_type': 'baremetal', + 'os_endpoint_type': 'public'} + mock_ir_cli.assert_called_once_with(CONF.ironic.api_version, + **expected) + + def test__get_client_with_auth_token(self): + self.flags(admin_auth_token='fake-token', group='ironic') + + # stop _get_client mock + self.mock_cli_patcher.stop() + self.mock_cli = None + + with mock.patch.object(nova_context, 'get_admin_context') as mock_ctx: + mock_ctx.return_value = self.ctx + with mock.patch.object(ironic_client, 'get_client') as mock_ir_cli: + self.driver._get_client() + expected = {'os_auth_token': self.ctx.auth_token, + 'ironic_url': CONF.ironic.api_endpoint} + mock_ir_cli.assert_called_once_with(CONF.ironic.api_version, + **expected) + + def test__require_node(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + test_instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + self.assertEqual(node_uuid, self.driver._require_node(test_instance)) + + def test__require_node_fail(self): + test_instance = fake_instance.fake_instance_obj(self.ctx, node=None) + self.assertRaises(exception.NovaException, + self.driver._require_node, test_instance) + + def test__node_resource(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + cpus = 2 + mem = 512 + disk = 10 + arch = 'x86_64' + properties = {'cpus': cpus, 'memory_mb': mem, + 'local_gb': disk, 'cpu_arch': arch} + node = get_test_node(uuid=node_uuid, + instance_uuid=uuidutils.generate_uuid(), + properties=properties) + + result = self.driver._node_resource(node) + self.assertEqual(cpus, result['vcpus']) + self.assertEqual(cpus, result['vcpus_used']) + self.assertEqual(mem, result['memory_mb']) + self.assertEqual(mem, result['memory_mb_used']) + self.assertEqual(disk, result['local_gb']) + self.assertEqual(disk, result['local_gb_used']) + self.assertEqual(node_uuid, result['hypervisor_hostname']) + self.assertEqual('{"cpu_arch": "x86_64", "ironic_driver": "' + 'nova.virt.ironic.driver.IronicDriver", ' + '"test_spec": "test_value"}', + result['stats']) + + def test__node_resource_no_instance_uuid(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + cpus = 2 + mem = 512 + disk = 10 + arch = 'x86_64' + properties = {'cpus': cpus, 'memory_mb': mem, + 'local_gb': disk, 'cpu_arch': arch} + node = get_test_node(uuid=node_uuid, + instance_uuid=None, + properties=properties) + + result = self.driver._node_resource(node) + self.assertEqual(cpus, result['vcpus']) + self.assertEqual(0, result['vcpus_used']) + self.assertEqual(mem, result['memory_mb']) + self.assertEqual(0, result['memory_mb_used']) + self.assertEqual(disk, result['local_gb']) + self.assertEqual(0, result['local_gb_used']) + self.assertEqual(node_uuid, result['hypervisor_hostname']) + self.assertEqual('{"cpu_arch": "x86_64", "ironic_driver": "' + 'nova.virt.ironic.driver.IronicDriver", ' + '"test_spec": "test_value"}', + result['stats']) + + def test__retry_on_conflict(self): + test_list = [] + + def test_func(test_list): + test_list.append(1) + + self.driver._retry_on_conflict(test_func, test_list) + self.assertIn(1, test_list) + + def test__retry_on_conflict_fail(self): + CONF.set_default('api_max_retries', default=1, group='ironic') + CONF.set_default('api_retry_interval', default=0, group='ironic') + + def test_func(): + raise ironic_exception.HTTPConflict() + + self.assertRaises(ironic_driver.MaximumRetriesReached, + self.driver._retry_on_conflict, test_func) + + def test__start_firewall(self): + func_list = ['setup_basic_filtering', + 'prepare_instance_filter', + 'apply_instance_filter'] + patch_list = [mock.patch.object(self.driver.firewall_driver, func) + for func in func_list] + mock_list = [patcher.start() for patcher in patch_list] + for p in patch_list: + self.addCleanup(p.stop) + + fake_inst = 'fake-inst' + fake_net_info = utils.get_test_network_info() + self.driver._start_firewall(fake_inst, fake_net_info) + + # assert all methods were invoked with the right args + for m in mock_list: + m.assert_called_once_with(fake_inst, fake_net_info) + + def test__stop_firewall(self): + fake_inst = 'fake-inst' + fake_net_info = utils.get_test_network_info() + with mock.patch.object(self.driver.firewall_driver, + 'unfilter_instance') as mock_ui: + self.driver._stop_firewall(fake_inst, fake_net_info) + mock_ui.assert_called_once_with(fake_inst, fake_net_info) + + def test_list_instances(self): + num_nodes = 2 + nodes = [] + for n in range(num_nodes): + nodes.append(get_test_node( + instance_uuid=uuidutils.generate_uuid())) + # append a node w/o instance_uuid which shouldn't be listed + nodes.append(get_test_node(instance_uuid=None)) + + with mock.patch.object(FAKE_CLIENT.node, 'list') as mock_list: + mock_list.return_value = nodes + + expected = [n for n in nodes if n.instance_uuid] + instances = self.driver.list_instances() + self.assertEqual(sorted(expected), sorted(instances)) + self.assertEqual(num_nodes, len(instances)) + + def test_get_available_nodes(self): + num_nodes = 2 + nodes = [] + for n in range(num_nodes): + nodes.append(get_test_node(uuid=uuidutils.generate_uuid(), + power_state=ironic_states.POWER_OFF)) + # append a node w/o power_state which shouldn't be listed + nodes.append(get_test_node(power_state=None)) + + with mock.patch.object(FAKE_CLIENT.node, 'list') as mock_list: + mock_list.return_value = nodes + + expected = [n.uuid for n in nodes if n.power_state] + available_nodes = self.driver.get_available_nodes() + self.assertEqual(sorted(expected), sorted(available_nodes)) + self.assertEqual(num_nodes, len(available_nodes)) + + def test_get_available_resource(self): + node = get_test_node() + fake_resource = 'fake-resource' + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + + with mock.patch.object(self.driver, '_node_resource') as mock_nr: + mock_nr.return_value = fake_resource + + result = self.driver.get_available_resource(node.uuid) + self.assertEqual(fake_resource, result) + mock_nr.assert_called_once_with(node) + + def test_get_info(self): + instance_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + properties = {'memory_mb': 512, 'cpus': 2} + power_state = ironic_states.POWER_ON + node = get_test_node(instance_uuid=instance_uuid, + properties=properties, + power_state=power_state) + + with mock.patch.object(FAKE_CLIENT.node, 'get_by_instance_uuid') \ + as mock_gbiu: + mock_gbiu.return_value = node + + # ironic_states.POWER_ON should me be mapped to + # nova_states.RUNNING + expected = {'state': nova_states.RUNNING, + 'max_mem': properties['memory_mb'], + 'mem': properties['memory_mb'], + 'num_cpu': properties['cpus'], + 'cpu_time': 0} + instance = fake_instance.fake_instance_obj('fake-context', + uuid=instance_uuid) + result = self.driver.get_info(instance) + self.assertEqual(expected, result) + + def test_get_info_http_not_found(self): + with mock.patch.object(FAKE_CLIENT.node, 'get_by_instance_uuid') \ + as mock_gbiu: + mock_gbiu.side_effect = ironic_exception.HTTPNotFound() + + expected = {'state': nova_states.NOSTATE, + 'max_mem': 0, + 'mem': 0, + 'num_cpu': 0, + 'cpu_time': 0} + instance = fake_instance.fake_instance_obj( + self.ctx, uuid=uuidutils.generate_uuid()) + result = self.driver.get_info(instance) + self.assertEqual(expected, result) + + def test_macs_for_instance(self): + node = get_test_node() + port = get_test_port() + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'list_ports') as mock_lp: + mock_lp.return_value = [port] + instance = fake_instance.fake_instance_obj(self.ctx, + node=node.uuid) + result = self.driver.macs_for_instance(instance) + self.assertEqual([port.address], result) + mock_lp.assert_called_once_with(node.uuid) + + def test_macs_for_instance_http_not_found(self): + with mock.patch.object(FAKE_CLIENT.node, 'get') as mock_get: + mock_get.side_effect = ironic_exception.HTTPNotFound() + + instance = fake_instance.fake_instance_obj( + self.ctx, node=uuidutils.generate_uuid()) + result = self.driver.macs_for_instance(instance) + self.assertEqual([], result) + + def test_spawn(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid) + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + fake_flavor = 'fake-flavor' + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_fg = mock.patch.object(self.driver.virtapi, 'flavor_get').start() + mock_fg.return_value = fake_flavor + self.addCleanup(mock_fg.stop) + mock_validate = mock.patch.object(FAKE_CLIENT.node, 'validate').start() + mock_validate.return_value = get_test_validation() + self.addCleanup(mock_validate.stop) + + mock_adf = mock.patch.object(self.driver, '_add_driver_fields').start() + self.addCleanup(mock_adf.stop) + mock_pvifs = mock.patch.object(self.driver, 'plug_vifs').start() + self.addCleanup(mock_pvifs.stop) + mock_sf = mock.patch.object(self.driver, '_start_firewall').start() + self.addCleanup(mock_pvifs.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'set_provision_state') \ + as mock_sps: + self.driver.spawn(self.ctx, instance, None, [], None) + + mock_get.assert_called_once_with(node_uuid) + mock_validate.assert_called_once_with(node_uuid) + mock_fg.assert_called_once_with(self.ctx, + instance['instance_type_id']) + mock_adf.assert_called_once_with(node, instance, None, fake_flavor) + mock_pvifs.assert_called_once_with(instance, None) + mock_sf.assert_called_once_with(instance, None) + mock_sps.assert_called_once_with(node_uuid, 'active') + + def test_spawn_setting_instance_uuid_fail(self): + instance = fake_instance.fake_instance_obj(self.ctx, + node=uuidutils.generate_uuid()) + with mock.patch.object(FAKE_CLIENT.node, 'update') as mock_update: + mock_update.side_effect = ironic_exception.HTTPBadRequest() + self.assertRaises(exception.NovaException, self.driver.spawn, + self.ctx, instance, None, [], None) + + def test_spawn_node_driver_validation_fail(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid) + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + fake_flavor = 'fake-flavor' + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_fg = mock.patch.object(self.driver.virtapi, 'flavor_get').start() + mock_fg.return_value = fake_flavor + self.addCleanup(mock_fg.stop) + + mock_adf = mock.patch.object(self.driver, '_add_driver_fields').start() + self.addCleanup(mock_adf.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'validate') as mock_validate: + mock_validate.return_value = get_test_validation(power=False, + deploy=False) + self.assertRaises(exception.ValidationError, self.driver.spawn, + self.ctx, instance, None, [], None) + + mock_get.assert_called_once_with(node_uuid) + mock_validate.assert_called_once_with(node_uuid) + mock_fg.assert_called_once_with(self.ctx, + instance['instance_type_id']) + mock_adf.assert_called_once_with(node, instance, None, fake_flavor) + + def test_spawn_node_prepare_for_deploy_fail(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid) + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_validate = mock.patch.object(FAKE_CLIENT.node, 'validate').start() + mock_validate.return_value = get_test_validation() + self.addCleanup(mock_validate.stop) + + mock_fg = mock.patch.object(self.driver.virtapi, 'flavor_get').start() + self.addCleanup(mock_fg.stop) + mock_pvifs = mock.patch.object(self.driver, 'plug_vifs').start() + self.addCleanup(mock_pvifs.stop) + mock_upvifs = mock.patch.object(self.driver, 'unplug_vifs').start() + self.addCleanup(mock_upvifs.stop) + mock_stof = mock.patch.object(self.driver, '_stop_firewall').start() + self.addCleanup(mock_stof.stop) + + class TestException(Exception): + pass + + with mock.patch.object(self.driver, '_start_firewall') as mock_sf: + mock_sf.side_effect = TestException() + self.assertRaises(TestException, self.driver.spawn, + self.ctx, instance, None, [], None) + + mock_get.assert_called_once_with(node_uuid) + mock_validate.assert_called_once_with(node_uuid) + mock_fg.assert_called_once_with(self.ctx, + instance['instance_type_id']) + mock_upvifs.assert_called_once_with(instance, None) + mock_stof.assert_called_once_with(instance, None) + + def test_spawn_node_trigger_deploy_fail(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid) + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_validate = mock.patch.object(FAKE_CLIENT.node, 'validate').start() + mock_validate.return_value = get_test_validation() + self.addCleanup(mock_validate.stop) + + mock_fg = mock.patch.object(self.driver.virtapi, 'flavor_get').start() + self.addCleanup(mock_fg.stop) + mock_pvifs = mock.patch.object(self.driver, 'plug_vifs').start() + self.addCleanup(mock_pvifs.stop) + mock_sf = mock.patch.object(self.driver, '_start_firewall').start() + self.addCleanup(mock_sf.stop) + mock_upvifs = mock.patch.object(self.driver, 'unplug_vifs').start() + self.addCleanup(mock_upvifs.stop) + mock_stof = mock.patch.object(self.driver, '_stop_firewall').start() + self.addCleanup(mock_stof.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'set_provision_state') \ + as mock_sps: + mock_sps.side_effect = ironic_driver.MaximumRetriesReached + self.assertRaises(exception.NovaException, self.driver.spawn, + self.ctx, instance, None, [], None) + + mock_get.assert_called_once_with(node_uuid) + mock_validate.assert_called_once_with(node_uuid) + mock_fg.assert_called_once_with(self.ctx, + instance['instance_type_id']) + mock_upvifs.assert_called_once_with(instance, None) + mock_stof.assert_called_once_with(instance, None) + + def test_destroy(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid) + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_sps = mock.patch.object(FAKE_CLIENT.node, + 'set_provision_state').start() + self.addCleanup(mock_sps.stop) + mock_update = mock.patch.object(FAKE_CLIENT.node, 'update').start() + self.addCleanup(mock_update.stop) + mock_upvifs = mock.patch.object(self.driver, 'unplug_vifs').start() + self.addCleanup(mock_upvifs.stop) + mock_stof = mock.patch.object(self.driver, '_stop_firewall').start() + self.addCleanup(mock_stof.stop) + + self.driver.destroy(self.ctx, instance, None, None) + mock_sps.assert_called_once_with(node_uuid, 'deleted') + mock_get.assert_called_with(node_uuid) + mock_upvifs.assert_called_once_with(instance, None) + mock_stof.assert_called_once_with(instance, None) + + def test_destroy_trigger_undeploy_fail(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + + with mock.patch.object(FAKE_CLIENT.node, 'set_provision_state') \ + as mock_sps: + mock_sps.side_effect = ironic_driver.MaximumRetriesReached + self.assertRaises(exception.NovaException, self.driver.destroy, + self.ctx, instance, None, None) + + def test_destroy_unprovision_fail(self): + CONF.set_default('api_max_retries', default=1, group='ironic') + CONF.set_default('api_retry_interval', default=0, group='ironic') + + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid, + provision_state='fake-state') + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_sps = mock.patch.object(FAKE_CLIENT.node, + 'set_provision_state').start() + self.addCleanup(mock_sps.stop) + + self.assertRaises(exception.NovaException, self.driver.destroy, + self.ctx, instance, None, None) + mock_sps.assert_called_once_with(node_uuid, 'deleted') + + def test_destroy_unassociate_fail(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(driver='fake', uuid=node_uuid) + instance = fake_instance.fake_instance_obj(self.ctx, node=node_uuid) + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_sps = mock.patch.object(FAKE_CLIENT.node, + 'set_provision_state').start() + self.addCleanup(mock_sps.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'update') as mock_update: + mock_update.side_effect = ironic_driver.MaximumRetriesReached() + self.assertRaises(exception.NovaException, self.driver.destroy, + self.ctx, instance, None, None) + mock_sps.assert_called_once_with(node_uuid, 'deleted') + mock_get.assert_called_with(node_uuid) + + def test_reboot(self): + #TODO(lucasagomes): Not implemented in the driver.py + pass + + def test_power_off(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + with mock.patch.object(FAKE_CLIENT.node, 'set_power_state') as mock_sp: + self.driver.power_off(instance) + mock_sp.assert_called_once_with(node_uuid, 'off') + + def test_power_on(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + with mock.patch.object(FAKE_CLIENT.node, 'set_power_state') as mock_sp: + self.driver.power_on(self.ctx, instance, + utils.get_test_network_info()) + mock_sp.assert_called_once_with(node_uuid, 'on') + + def test_get_host_stats(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + cpu_arch = 'x86_64' + node = get_test_node(uuid=node_uuid, + properties={'cpu_arch': cpu_arch}) + supported_instances = 'fake-supported-instances' + resource = {'supported_instances': supported_instances, + 'hypervisor_hostname': uuidutils.generate_uuid(), + 'cpu_info': 'baremetal cpu', + 'hypervisor_version': 1, + 'local_gb': 10, + 'memory_mb_used': 512, + 'stats': {'cpu_arch': 'x86_64', + 'ironic_driver': + 'nova.virt.ironic.driver.IronicDriver', + 'test_spec': 'test_value'}, + 'vcpus_used': 2, + 'hypervisor_type': 'ironic', + 'local_gb_used': 10, + 'memory_mb': 512, + 'vcpus': 2} + + # Reset driver specs + test_extra_spec = 'test-spec' + self.driver.extra_specs = {test_extra_spec: test_extra_spec} + + with mock.patch.object(FAKE_CLIENT.node, 'list') as mock_list: + mock_list.return_value = [node] + with mock.patch.object(self.driver, '_node_resource') as mock_nr: + mock_nr.return_value = resource + with mock.patch.object(ironic_driver, + '_get_nodes_supported_instances') as mock_gnsi: + mock_gnsi.return_value = supported_instances + + expected = {'vcpus': resource['vcpus'], + 'vcpus_used': resource['vcpus_used'], + 'cpu_info': resource['cpu_info'], + 'disk_total': resource['local_gb'], + 'disk_used': resource['local_gb'], + 'disk_available': 0, + 'host_memory_total': resource['memory_mb'], + 'host_memory_free': 0, + 'hypervisor_type': resource['hypervisor_type'], + 'hypervisor_version': resource['hypervisor_version'], + 'supported_instances': supported_instances, + 'host': CONF.host, + 'hypervisor_hostname': node_uuid, + 'node': node_uuid, + 'cpu_arch': cpu_arch, + test_extra_spec: test_extra_spec} + + result = self.driver.get_host_stats() + self.assertEqual([expected], result) + + def test_plug_vifs(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(uuid=node_uuid) + port = get_test_port() + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_uvifs = mock.patch.object(self.driver, 'unplug_vifs').start() + self.addCleanup(mock_uvifs.stop) + mock_update = mock.patch.object(FAKE_CLIENT.port, 'update').start() + self.addCleanup(mock_update.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'list_ports') as mock_lp: + mock_lp.return_value = [port] + + instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + network_info = utils.get_test_network_info() + + port_id = unicode(network_info[0]['id']) + expected_patch = [{'op': 'add', + 'path': '/extra/vif_port_id', + 'value': port_id}] + self.driver.plug_vifs(instance, network_info) + + # asserts + mock_uvifs.assert_called_once_with(instance, network_info) + mock_get.assert_called_once_with(node_uuid) + mock_lp.assert_called_once_with(node_uuid) + mock_update.assert_called_once_with(port.uuid, expected_patch) + + def test_plug_vifs_count_missmatch(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(uuid=node_uuid) + port = get_test_port() + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_uvifs = mock.patch.object(self.driver, 'unplug_vifs').start() + self.addCleanup(mock_uvifs.stop) + mock_update = mock.patch.object(FAKE_CLIENT.port, 'update').start() + self.addCleanup(mock_update.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'list_ports') as mock_lp: + mock_lp.return_value = [port] + + instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + # len(network_info) > len(ports) + network_info = (utils.get_test_network_info() + + utils.get_test_network_info()) + self.assertRaises(exception.NovaException, + self.driver.plug_vifs, instance, + network_info) + + # asserts + mock_uvifs.assert_called_once_with(instance, network_info) + mock_get.assert_called_once_with(node_uuid) + mock_lp.assert_called_once_with(node_uuid) + # assert port.update() was not called + assert not mock_update.called + + def test_plug_vifs_no_network_info(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(uuid=node_uuid) + port = get_test_port() + + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + mock_uvifs = mock.patch.object(self.driver, 'unplug_vifs').start() + self.addCleanup(mock_uvifs.stop) + mock_update = mock.patch.object(FAKE_CLIENT.port, 'update').start() + self.addCleanup(mock_update.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'list_ports') as mock_lp: + mock_lp.return_value = [port] + + instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + network_info = [] + self.driver.plug_vifs(instance, network_info) + + # asserts + mock_uvifs.assert_called_once_with(instance, network_info) + mock_get.assert_called_once_with(node_uuid) + mock_lp.assert_called_once_with(node_uuid) + # assert port.update() was not called + assert not mock_update.called + + def test_unplug_vifs(self): + node_uuid = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + node = get_test_node(uuid=node_uuid) + port = get_test_port() + + mock_update = mock.patch.object(FAKE_CLIENT.port, 'update').start() + self.addCleanup(mock_update.stop) + mock_get = mock.patch.object(FAKE_CLIENT.node, 'get').start() + mock_get.return_value = node + self.addCleanup(mock_get.stop) + + with mock.patch.object(FAKE_CLIENT.node, 'list_ports') as mock_lp: + mock_lp.return_value = [port] + + instance = fake_instance.fake_instance_obj(self.ctx, + node=node_uuid) + expected_patch = [{'op': 'remove', 'path': + '/extra/vif_port_id'}] + self.driver.unplug_vifs(instance, + utils.get_test_network_info()) + + # asserts + mock_get.assert_called_once_with(node_uuid) + mock_lp.assert_called_once_with(node_uuid) + mock_update.assert_called_once_with(port.uuid, expected_patch) + + def test_unplug_vifs_no_network_info(self): + mock_update = mock.patch.object(FAKE_CLIENT.port, 'update').start() + self.addCleanup(mock_update.stop) + + instance = fake_instance.fake_instance_obj(self.ctx) + network_info = [] + self.driver.unplug_vifs(instance, network_info) + + # assert port.update() was not called + assert not mock_update.called diff -Nru ironic-2014.1~b3/ironic/nova/virt/ironic/driver.py ironic-2014.1~rc1/ironic/nova/virt/ironic/driver.py --- ironic-2014.1~b3/ironic/nova/virt/ironic/driver.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/virt/ironic/driver.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,681 @@ +# coding=utf-8 +# +# Copyright 2014 Red Hat, Inc. +# 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. + +""" +A driver wrapping the Ironic API, such that Nova may provision +bare metal resources. +""" + +from ironicclient import client as ironic_client +from ironicclient import exc as ironic_exception +from oslo.config import cfg + +from ironic.nova.virt.ironic import ironic_states +from nova.compute import power_state +from nova import exception +from nova.objects import flavor as flavor_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 loopingcall +from nova.virt import driver as virt_driver +from nova.virt import firewall + +LOG = logging.getLogger(__name__) + +opts = [ + cfg.IntOpt('api_version', + default=1, + help='Version of Ironic API service endpoint.'), + cfg.StrOpt('api_endpoint', + help='URL for Ironic API endpoint.'), + cfg.StrOpt('admin_username', + help='Ironic keystone admin name'), + cfg.StrOpt('admin_password', + help='Ironic keystone admin password.'), + cfg.StrOpt('admin_auth_token', + help='Ironic keystone auth token.'), + cfg.StrOpt('admin_url', + help='Ironic public api endpoint.'), + cfg.StrOpt('pxe_bootfile_name', + help='This gets passed to Neutron as the bootfile dhcp ' + 'parameter when the dhcp_options_enabled is set.', + default='pxelinux.0'), + cfg.StrOpt('admin_tenant_name', + help='Ironic keystone tenant name.'), + cfg.ListOpt('instance_type_extra_specs', + default=[], + help='A list of additional capabilities corresponding to ' + 'instance_type_extra_specs for this compute ' + 'host to advertise. Valid entries are name=value, pairs ' + 'For example, "key1:val1, key2:val2"'), + cfg.IntOpt('api_max_retries', + default=5, + help=('How many retries when a request does conflict.')), + cfg.IntOpt('api_retry_interval', + default=2, + help=('How often to retry in seconds when a request ' + 'does conflict')), + ] + +ironic_group = cfg.OptGroup(name='ironic', + title='Ironic Options') + +CONF = cfg.CONF +CONF.register_group(ironic_group) +CONF.register_opts(opts, ironic_group) + +_FIREWALL_DRIVER = "%s.%s" % (firewall.__name__, + firewall.NoopFirewallDriver.__name__) + +_POWER_STATE_MAP = { + ironic_states.POWER_ON: power_state.RUNNING, + ironic_states.NOSTATE: power_state.NOSTATE, + ironic_states.POWER_OFF: power_state.SHUTDOWN, +} + + +class MaximumRetriesReached(exception.NovaException): + msg_fmt = _("Maximum number of retries reached.") + + +def map_power_state(state): + try: + return _POWER_STATE_MAP[state] + except KeyError: + LOG.warning(_("Power state %s not found.") % state) + return power_state.NOSTATE + + +def validate_instance_and_node(icli, instance): + """Get and validate a node's uuid out of a manager instance dict. + + The compute manager is meant to know the node uuid, so missing uuid + a significant issue - it may mean we've been passed someone elses data. + + Check with the Ironic service that this node is still associated with + this instance. This catches situations where Nova's instance dict + contains stale data (eg, a delete on an instance that's already gone). + + """ + try: + return icli.node.get_by_instance_uuid(instance['uuid']) + except ironic_exception.HTTPNotFound: + raise exception.InstanceNotFound(instance_id=instance['uuid']) + + +def _get_required_value(key, value): + """Return the requested value.""" + if '/' in value: + # we need to split the value + split_value = value.split('/') + eval_string = 'key' + for value in split_value: + eval_string = "%s['%s']" % (eval_string, value) + return eval(eval_string) + else: + return key[value] + + +def _get_nodes_supported_instances(cpu_arch=''): + """Return supported instances for a node.""" + return [(cpu_arch, 'baremetal', 'baremetal')] + + +class IronicDriver(virt_driver.ComputeDriver): + """Hypervisor driver for Ironic - bare metal provisioning.""" + + capabilities = {"has_imagecache": False} + + def __init__(self, virtapi, read_only=False): + super(IronicDriver, self).__init__(virtapi) + + self.firewall_driver = firewall.load_driver(default=_FIREWALL_DRIVER) + # TODO(deva): sort out extra_specs and nova-scheduler interaction + extra_specs = {} + extra_specs["ironic_driver"] = \ + "ironic.nova.virt.ironic.driver.IronicDriver" + # cpu_arch set per node. + extra_specs['cpu_arch'] = '' + for pair in CONF.ironic.instance_type_extra_specs: + keyval = pair.split(':', 1) + keyval[0] = keyval[0].strip() + keyval[1] = keyval[1].strip() + extra_specs[keyval[0]] = keyval[1] + + self.extra_specs = extra_specs + + def _retry_if_service_is_unavailable(self, func, *args): + """Rety the request if the API returns 409 (Conflict).""" + def _request_api(): + try: + func(*args) + raise loopingcall.LoopingCallDone() + except ironic_exception.HTTPServiceUnavailable: + pass + + if self.tries >= CONF.ironic.api_max_retries: + raise MaximumRetriesReached() + else: + self.tries += 1 + + self.tries = 0 + timer = loopingcall.FixedIntervalLoopingCall(_request_api) + timer.start(interval=CONF.ironic.api_retry_interval).wait() + + def _get_client(self): + # TODO(deva): save and reuse existing client & auth token + # until it expires or is no longer valid + auth_token = CONF.ironic.admin_auth_token + if auth_token is None: + kwargs = {'os_username': CONF.ironic.admin_username, + 'os_password': CONF.ironic.admin_password, + 'os_auth_url': CONF.ironic.admin_url, + 'os_tenant_name': CONF.ironic.admin_tenant_name, + 'os_service_type': 'baremetal', + 'os_endpoint_type': 'public'} + else: + kwargs = {'os_auth_token': auth_token, + 'ironic_url': CONF.ironic.api_endpoint} + return ironic_client.get_client(CONF.ironic.api_version, **kwargs) + + def _node_resource(self, node): + # TODO(deva): refactor this to match ironic node datastruct + vcpus_used = 0 + memory_mb_used = 0 + local_gb_used = 0 + + vcpus = int(node.properties.get('cpus', 0)) + memory_mb = int(node.properties.get('memory_mb', 0)) + local_gb = int(node.properties.get('local_gb', 0)) + cpu_arch = str(node.properties.get('cpu_arch', 'NotFound')) + nodes_extra_specs = self.extra_specs + nodes_extra_specs['cpu_arch'] = cpu_arch + + if node.instance_uuid: + vcpus_used = vcpus + memory_mb_used = memory_mb + local_gb_used = local_gb + + dic = {'vcpus': vcpus, + 'memory_mb': memory_mb, + 'local_gb': local_gb, + 'vcpus_used': vcpus_used, + 'memory_mb_used': memory_mb_used, + 'local_gb_used': local_gb_used, + 'hypervisor_type': self.get_hypervisor_type(), + 'hypervisor_version': self.get_hypervisor_version(), + 'hypervisor_hostname': str(node.uuid), + 'cpu_info': 'baremetal cpu', + 'supported_instances': jsonutils.dumps( + _get_nodes_supported_instances(cpu_arch)), + 'stats': jsonutils.dumps(nodes_extra_specs) + } + return dic + + def _start_firewall(self, instance, network_info): + self.firewall_driver.setup_basic_filtering(instance, network_info) + self.firewall_driver.prepare_instance_filter(instance, network_info) + self.firewall_driver.apply_instance_filter(instance, network_info) + + def _stop_firewall(self, instance, network_info): + self.firewall_driver.unfilter_instance(instance, network_info) + + def _add_driver_fields(self, node, instance, image_meta, flavor=None): + icli = self._get_client() + if 'pxe' in node.driver: + # add required fields + pxe_fields = importutils.import_class( + 'ironic.nova.virt.ironic.ironic_driver_fields.PXE') + + patch = [] + for field in pxe_fields.required: + path_to_add = "%s/%s" % (field['ironic_path'], + field['ironic_variable']) + patch = [{'op': 'add', + 'path': path_to_add, + 'value': unicode(_get_required_value( + eval(field['nova_object']), + field['object_field']))}] + try: + self._retry_if_service_is_unavailable(icli.node.update, + node.uuid, patch) + except MaximumRetriesReached: + msg = (_("Adding the parameter %(param)s on node %(node)s " + "failed after %(retries)d retries") + % {'param': path_to_add, 'node': node.uuid, + 'retries': CONF.ironic.api_max_retries}) + LOG.error(msg) + raise exception.NovaException(msg) + + def _cleanup_deploy(self, node, instance, network_info): + icli = self._get_client() + if 'pxe' in node.driver: + # add required fields + pxe_fields = importutils.import_class( + 'ironic.nova.virt.ironic.ironic_driver_fields.PXE') + + patch = [] + for field in pxe_fields.required: + path_to_remove = "%s/%s" % (field['ironic_path'], + field['ironic_variable']) + patch = [{'op': 'remove', 'path': path_to_remove}] + + try: + self._retry_if_service_is_unavailable(icli.node.update, + node.uuid, patch) + except MaximumRetriesReached: + LOG.warning(_("Removing the parameter %(param)s on node " + "%(node)s failed after %(retries)d retries") + % {'param': path_to_remove, 'node': node.uuid, + 'retries': CONF.ironic.api_max_retries}) + except ironic_exception.HTTPBadRequest: + pass + + self._unplug_vifs(node, instance, network_info) + self._stop_firewall(instance, network_info) + + @classmethod + def instance(cls): + if not hasattr(cls, '_instance'): + cls._instance = cls() + return cls._instance + + def init_host(self, host): + return + + def get_hypervisor_type(self): + return 'ironic' + + def get_hypervisor_version(self): + return CONF.ironic.api_version + + def list_instances(self): + try: + icli = self._get_client() + except ironic_exception.Unauthorized: + LOG.error(_("Unable to authenticate Ironic client.")) + return [] + + instances = [i for i in icli.node.list() if i.instance_uuid] + return instances + + def get_available_nodes(self, refresh=False): + nodes = [] + icli = self._get_client() + node_list = icli.node.list() + + for n in node_list: + # for now we'll use the nodes power state. if power_state is None + # we'll assume it is not ready to be presented to Nova. + if n.power_state: + nodes.append(n.uuid) + + LOG.debug("Returning Nodes: %s" % nodes) + return nodes + + def get_available_resource(self, node): + """Retrieve resource information. + + This method is called when nova-compute launches, and + as part of a periodic task that records the results in the DB. + + :param node: the uuid of the node + :returns: dictionary describing resources + + """ + icli = self._get_client() + node = icli.node.get(node) + return self._node_resource(node) + + def get_info(self, instance): + + icli = self._get_client() + try: + node = icli.node.get_by_instance_uuid(instance['uuid']) + except ironic_exception.HTTPNotFound: + return {'state': map_power_state(ironic_states.NOSTATE), + 'max_mem': 0, + 'mem': 0, + 'num_cpu': 0, + 'cpu_time': 0 + } + + return {'state': map_power_state(node.power_state), + 'max_mem': node.properties.get('memory_mb'), + 'mem': node.properties.get('memory_mb'), + 'num_cpu': node.properties.get('cpus'), + 'cpu_time': 0 + } + + def macs_for_instance(self, instance): + icli = self._get_client() + try: + node = icli.node.get(instance['node']) + except ironic_exception.HTTPNotFound: + return [] + ports = icli.node.list_ports(node.uuid) + return [p.address for p in ports] + + def spawn(self, context, instance, image_meta, injected_files, + admin_password, network_info=None, block_device_info=None): + # The compute manager is meant to know the node uuid, so missing uuid + # is a significant issue. It may mean we've been passed the wrong data. + node_uuid = instance.get('node') + if not node_uuid: + raise exception.NovaException(_("Ironic node uuid not supplied to " + "driver for instance %s.") % instance['uuid']) + icli = self._get_client() + node = icli.node.get(node_uuid) + + # Associate the node to this instance + try: + # NOTE(deva): this may raise a NodeAlreadyAssociated exception + # which we allow to propagate up to the scheduler, + # so it retries on another node. + patch = [{'op': 'replace', + 'path': '/instance_uuid', + 'value': instance['uuid']}] + self._retry_if_service_is_unavailable(icli.node.update, + node_uuid, patch) + except (ironic_exception.HTTPBadRequest, MaximumRetriesReached): + msg = _("Unable to set instance UUID for node %s") % node_uuid + LOG.error(msg) + raise exception.NovaException(msg) + + # Set image id, and other driver info so we can pass it down to Ironic + # use the ironic_driver_fields file to import + flavor = flavor_obj.Flavor.get_by_id(context, + instance['instance_type_id']) + self._add_driver_fields(node, instance, image_meta, flavor) + + #validate we ready to do the deploy + validate_chk = icli.node.validate(node_uuid) + if not validate_chk.deploy or not validate_chk.power: + # something is wrong. undo we we have done + self._cleanup_deploy(node, instance, network_info) + raise exception.ValidationError(_( + "Ironic node: %(id)s failed to validate." + " (deploy: %(deploy)s, power: %(power)s)") + % {'id': node.uuid, + 'deploy': validate_chk.deploy, + 'power': validate_chk.power}) + + # prepare for the deploy + try: + self._plug_vifs(node, instance, network_info) + self._start_firewall(instance, network_info) + except Exception: + with excutils.save_and_reraise_exception(): + LOG.error(_("Error preparing deploy for instance %(instance)s " + "on baremetal node %(node)s.") % + {'instance': instance['uuid'], + 'node': node_uuid}) + self._cleanup_deploy(node, instance, network_info) + + # trigger the node deploy + try: + self._retry_if_service_is_unavailable( + icli.node.set_provision_state, node_uuid, 'active') + except MaximumRetriesReached: + msg = (_("Error triggering the node %s to start the deployment") + % node_uuid) + LOG.error(msg) + self._cleanup_deploy(node, instance, network_info) + raise exception.NovaException(msg) + + # wait for the node to be marked as ACTIVE in Ironic + def _wait_for_active(): + try: + node = icli.node.get_by_instance_uuid(instance['uuid']) + except ironic_exception.HTTPNotFound: + raise exception.InstanceNotFound(instance_id=instance['uuid']) + + if node.provision_state == ironic_states.ACTIVE: + # job is done + raise loopingcall.LoopingCallDone() + + if node.target_provision_state == ironic_states.DELETED: + # ironic is trying to delete it now + raise exception.InstanceNotFound(instance_id=instance['uuid']) + + if node.provision_state == ironic_states.NOSTATE: + # ironic already deleted it + raise exception.InstanceNotFound(instance_id=instance['uuid']) + + if node.provision_state == ironic_states.DEPLOYFAIL: + # ironic failed to deploy + msg = (_("Failed to provision instance %(inst)s: %(reason)s") + % {'inst': instance['uuid'], 'reason': node.last_error}) + LOG.error(msg) + raise exception.InstanceDeployFailure(msg) + + timer = loopingcall.FixedIntervalLoopingCall(_wait_for_active) + # TODO(lucasagomes): Make the time configurable + timer.start(interval=10).wait() + + def destroy(self, context, instance, network_info, + block_device_info=None): + icli = self._get_client() + try: + node = validate_instance_and_node(icli, instance) + node_uuid = node.uuid + except exception.InstanceNotFound: + LOG.debug(_("Destroy called on non-existing instance %s.") + % instance['uuid']) + # NOTE(deva): if nova.compute.ComputeManager._delete_instance() + # is called on a non-existing instance, the only way + # to delete it is to return from this method + # without raising any exceptions. + return + + # do node tear down and wait for the state change + try: + self._retry_if_service_is_unavailable( + icli.node.set_provision_state, node_uuid, 'deleted') + except MaximumRetriesReached: + msg = (_("Error triggering the unprovisioning of the node %s") + % node_uuid) + LOG.error(msg) + raise exception.NovaException(msg) + except Exception as e: + # if the node is already in a deprovisioned state, continue + # This should be fixed in Ironic. + # TODO(deva): This exception should be added to python-ironicclient + # and matched directly, rather than via __name__. + if getattr(e, '__name__', None) == 'InstanceDeployFailure': + pass + else: + raise + + def _wait_for_provision_state(): + try: + node = icli.node.get_by_instance_uuid(instance['uuid']) + except ironic_exception.HTTPNotFound: + raise exception.InstanceNotFound(instance_id=instance['uuid']) + + if not node.provision_state: + raise loopingcall.LoopingCallDone() + + if self.tries >= CONF.ironic.api_max_retries: + msg = (_("Error destroying the instance on node %(node)s. " + "Provision state still '%(state)s'.") + % {'state': node.provision_state, 'node': node.uuid}) + LOG.error(msg) + raise exception.NovaException(msg) + else: + self.tries += 1 + + self.tries = 0 + timer = loopingcall.FixedIntervalLoopingCall(_wait_for_provision_state) + timer.start(interval=CONF.ironic.api_retry_interval).wait() + + # remove the instance uuid + try: + patch = [{'op': 'remove', 'path': '/instance_uuid'}] + self._retry_if_service_is_unavailable(icli.node.update, + node_uuid, patch) + except MaximumRetriesReached: + msg = (_("Failed to unassociate the instance %(instance)s " + "with node %(node)s") % {'instance': instance['uuid'], + 'node': node_uuid}) + LOG.error(msg) + raise exception.NovaException(msg) + except ironic_exception.HTTPBadRequest: + pass + + self._cleanup_deploy(node, instance, network_info) + + def reboot(self, context, instance, network_info, reboot_type, + block_device_info=None, bad_volumes_callback=None): + pass + + def power_off(self, instance, node=None): + # TODO(nobodycam): check the current power state first. + icli = self._get_client() + node = validate_instance_and_node(icli, instance) + icli.node.set_power_state(node.uuid, 'off') + + def power_on(self, context, instance, network_info, block_device_info=None, + node=None): + # TODO(nobodycam): check the current power state first. + icli = self._get_client() + node = validate_instance_and_node(icli, instance) + icli.node.set_power_state(node.uuid, 'on') + + def get_host_stats(self, refresh=False): + caps = [] + icli = self._get_client() + + for node in icli.node.list(): + res = self._node_resource(node) + nodename = str(node.uuid) + cpu_arch = str(node.properties.get('cpu_arch', 'NotFound')) + + nodes_extra_specs = self.extra_specs + nodes_extra_specs['cpu_arch'] = cpu_arch + data = {} + data['vcpus'] = res['vcpus'] + data['vcpus_used'] = res['vcpus_used'] + data['cpu_info'] = res['cpu_info'] + data['disk_total'] = res['local_gb'] + data['disk_used'] = res['local_gb_used'] + data['disk_available'] = res['local_gb'] - res['local_gb_used'] + data['host_memory_total'] = res['memory_mb'] + data['host_memory_free'] = res['memory_mb'] - res['memory_mb_used'] + data['hypervisor_type'] = res['hypervisor_type'] + data['hypervisor_version'] = res['hypervisor_version'] + data['supported_instances'] = _get_nodes_supported_instances( + cpu_arch) + data.update(nodes_extra_specs) + data['host'] = CONF.host + data['hypervisor_hostname'] = nodename + data['node'] = nodename + caps.append(data) + return caps + + def manage_image_cache(self, context, all_instances): + pass + + def get_console_output(self, instance): + raise NotImplementedError() + + def refresh_security_group_rules(self, security_group_id): + pass + + def refresh_security_group_members(self, security_group_id): + pass + + def refresh_provider_fw_rules(self): + pass + + def refresh_instance_security_rules(self, instance): + pass + + def ensure_filtering_rules_for_instance(self, instance_ref, network_info): + pass + + def unfilter_instance(self, instance_ref, network_info): + pass + + def _plug_vifs(self, node, instance, network_info): + LOG.debug(_("plug: instance_uuid=%(uuid)s vif=%(network_info)s") + % {'uuid': instance['uuid'], 'network_info': network_info}) + # start by ensuring the ports are clear + self._unplug_vifs(node, instance, network_info) + + icli = self._get_client() + ports = icli.node.list_ports(node.uuid) + + if len(network_info) > len(ports): + raise exception.NovaException(_( + "Ironic node: %(id)s virtual to physical interface count" + " missmatch" + " (Vif count: %(vif_count)d, Pif count: %(pif_count)d)") + % {'id': node.uuid, + 'vif_count': len(network_info), + 'pif_count': len(ports)}) + + if len(network_info) > 0: + # not needed if no vif are defined + for vif, pif in zip(network_info, ports): + # attach what neutron needs directly to the port + port_id = unicode(vif['id']) + patch = [{'op': 'add', + 'path': '/extra/vif_port_id', + 'value': port_id}] + try: + self._retry_if_service_is_unavailable(icli.port.update, + pif.uuid, patch) + except MaximumRetriesReached: + msg = (_("Failed to set the VIF networking for port %s") + % pif.uuid) + raise exception.NovaException(msg) + + def _unplug_vifs(self, node, instance, network_info): + LOG.debug(_("unplug: instance_uuid=%(uuid)s vif=%(network_info)s") + % {'uuid': instance['uuid'], 'network_info': network_info}) + if network_info and len(network_info) > 0: + icli = self._get_client() + ports = icli.node.list_ports(node.uuid) + + # not needed if no vif are defined + for vif, pif in zip(network_info, ports): + # we can not attach a dict directly + patch = [{'op': 'remove', 'path': '/extra/vif_port_id'}] + try: + self._retry_if_service_is_unavailable(icli.port.update, + pif.uuid, patch) + except MaximumRetriesReached: + msg = (_("Failed to remove the VIF networking for port %s") + % pif.uuid) + LOG.warning(msg) + except ironic_exception.HTTPBadRequest: + pass + + def plug_vifs(self, instance, network_info): + icli = self._get_client() + node = icli.node.get(instance['node']) + self._plug_vifs(node, instance, network_info) + + def unplug_vifs(self, instance, network_info): + icli = self._get_client() + node = icli.node.get(instance['node']) + self._unplug_vifs(node, instance, network_info) diff -Nru ironic-2014.1~b3/ironic/nova/virt/ironic/__init__.py ironic-2014.1~rc1/ironic/nova/virt/ironic/__init__.py --- ironic-2014.1~b3/ironic/nova/virt/ironic/__init__.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/virt/ironic/__init__.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,18 @@ +# 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. + +from ironic.nova.virt.ironic import driver + +IronicDriver = driver.IronicDriver diff -Nru ironic-2014.1~b3/ironic/nova/virt/ironic/ironic_driver_fields.py ironic-2014.1~rc1/ironic/nova/virt/ironic/ironic_driver_fields.py --- ironic-2014.1~b3/ironic/nova/virt/ironic/ironic_driver_fields.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/virt/ironic/ironic_driver_fields.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,60 @@ +# coding=utf-8 +# +# Copyright 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. +# +# Values should be a list of dicts. Where each dict is +# {'ironic_path': '/driver_info', 'ironic_variable': 'pxe_image_source', +# 'nova_object': 'image_meta', 'object_field': "['id']"} + +""" +Ironic driver required info mapping. +""" + + +class FAKE(object): + """Required and optional field list for ironic's FAKE driver.""" + required = [] + optional = [] + + +class PXE(object): + """Required and optional field list for ironic's PXE driver.""" + required = [ + {'ironic_path': '/driver_info', + 'ironic_variable': 'pxe_image_source', + 'nova_object': 'image_meta', + 'object_field': 'id'}, + {'ironic_path': '/driver_info', + 'ironic_variable': 'pxe_root_gb', + 'nova_object': 'instance', + 'object_field': 'root_gb'}, + {'ironic_path': '/driver_info', + 'ironic_variable': 'pxe_swap_mb', + 'nova_object': 'flavor', + 'object_field': 'swap'}, + {'ironic_path': '/driver_info', + 'ironic_variable': 'pxe_deploy_kernel', + 'nova_object': 'flavor', + 'object_field': 'extra_specs/' + 'baremetal:deploy_kernel_id'}, + {'ironic_path': '/driver_info', + 'ironic_variable': 'pxe_deploy_ramdisk', + 'nova_object': 'flavor', + 'object_field': 'extra_specs/' + 'baremetal:deploy_ramdisk_id'} + ] + + optional = [] diff -Nru ironic-2014.1~b3/ironic/nova/virt/ironic/ironic_states.py ironic-2014.1~rc1/ironic/nova/virt/ironic/ironic_states.py --- ironic-2014.1~b3/ironic/nova/virt/ironic/ironic_states.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/nova/virt/ironic/ironic_states.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,66 @@ +# coding=utf-8 +# +# Copyright (c) 2012 NTT DOCOMO, 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. + +""" +Mapping of bare metal node states. + +A node may have empty {} `properties` and `driver_info` in which case, it is +said to be "initialized" but "not available", and the state is NOSTATE. + +When updating `properties`, any data will be rejected if the data fails to be +validated by the driver. Any node with non-empty `properties` is said to be +"initialized", and the state is INIT. + +When the driver has received both `properties` and `driver_info`, it will check +the power status of the node and update the `power_state` accordingly. If the +driver fails to read the power state from the node, it will reject the +`driver_info` change, and the state will remain as INIT. If the power status +check succeeds, `power_state` will change to one of POWER_ON or POWER_OFF, +accordingly. + +At this point, the power state may be changed via the API, a console +may be started, and a tenant may be associated. + +The `power_state` for a node always represents the current power state. Any +power operation sets this to the actual state when done (whether successful or +not). It is set to ERROR only when unable to get the power state from a node. + +When `instance_uuid` is set to a non-empty / non-None value, the node is said +to be "associated" with a tenant. + +An associated node can not be deleted. + +The `instance_uuid` field may be unset only if the node is in POWER_OFF or +ERROR states. +""" + +NOSTATE = None +INIT = 'initializing' +ACTIVE = 'active' +BUILDING = 'building' +DEPLOYING = 'deploying' +DEPLOYFAIL = 'deploy failed' +DEPLOYDONE = 'deploy complete' +DELETING = 'deleting' +DELETED = 'deleted' +ERROR = 'error' + +POWER_ON = 'power on' +POWER_OFF = 'power off' +REBOOT = 'rebooting' +SUSPEND = 'suspended' diff -Nru ironic-2014.1~b3/ironic/openstack/common/context.py ironic-2014.1~rc1/ironic/openstack/common/context.py --- ironic-2014.1~b3/ironic/openstack/common/context.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/context.py 2014-04-01 19:49:34.000000000 +0000 @@ -36,12 +36,18 @@ accesses the system, as well as additional request information. """ - def __init__(self, auth_token=None, user=None, tenant=None, is_admin=False, + user_idt_format = '{user} {tenant} {domain} {user_domain} {p_domain}' + + def __init__(self, auth_token=None, user=None, tenant=None, domain=None, + user_domain=None, project_domain=None, is_admin=False, read_only=False, show_deleted=False, request_id=None, instance_uuid=None): self.auth_token = auth_token self.user = user self.tenant = tenant + self.domain = domain + self.user_domain = user_domain + self.project_domain = project_domain self.is_admin = is_admin self.read_only = read_only self.show_deleted = show_deleted @@ -51,14 +57,25 @@ self.request_id = request_id def to_dict(self): + user_idt = ( + self.user_idt_format.format(user=self.user or '-', + tenant=self.tenant or '-', + domain=self.domain or '-', + user_domain=self.user_domain or '-', + p_domain=self.project_domain or '-')) + return {'user': self.user, 'tenant': self.tenant, + 'domain': self.domain, + 'user_domain': self.user_domain, + 'project_domain': self.project_domain, '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, - 'instance_uuid': self.instance_uuid} + 'instance_uuid': self.instance_uuid, + 'user_identity': user_idt} def get_admin_context(show_deleted=False): @@ -81,3 +98,14 @@ return arg return None + + +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 diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/api.py ironic-2014.1~rc1/ironic/openstack/common/db/api.py --- ironic-2014.1~b3/ironic/openstack/common/db/api.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/api.py 2014-04-01 19:49:34.000000000 +0000 @@ -1,5 +1,3 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - # Copyright (c) 2013 Rackspace Hosting # All Rights Reserved. # @@ -17,90 +15,148 @@ """Multiple DB API backend support. -Supported configuration options: - -The following two parameters are in the 'database' group: -`backend`: DB backend name or full module path to DB backend module. -`use_tpool`: Enable thread pooling of DB API calls. - 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. - -*NOTE*: There are bugs in eventlet when using tpool combined with -threading locks. The python logging module happens to use such locks. To -work around this issue, be sure to specify thread=False with -eventlet.monkey_patch(). - -A bug for eventlet has been filed here: - -https://bitbucket.org/eventlet/eventlet/issue/137/ """ -import functools -from oslo.config import cfg +import functools +import logging +import threading +import time +from ironic.openstack.common.db import exception +from ironic.openstack.common.gettextutils import _LE from ironic.openstack.common import importutils -from ironic.openstack.common import lockutils -db_opts = [ - cfg.StrOpt('backend', - default='sqlalchemy', - deprecated_name='db_backend', - deprecated_group='DEFAULT', - help='The backend to use for db'), - cfg.BoolOpt('use_tpool', - default=False, - deprecated_name='dbapi_use_tpool', - deprecated_group='DEFAULT', - help='Enable the experimental use of thread pooling for ' - 'all DB API calls') -] +LOG = logging.getLogger(__name__) + -CONF = cfg.CONF -CONF.register_opts(db_opts, 'database') +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_mapping=None): - if backend_mapping is None: - backend_mapping = {} - self.__backend = None - self.__backend_mapping = backend_mapping - - @lockutils.synchronized('dbapi_backend', 'ironic-') - def __get_backend(self): - """Get the actual backend. May be a module or an instance of - a class. Doesn't matter to us. We do this synchronized as it's - possible multiple greenthreads started very quickly trying to do - DB calls and eventlet can switch threads before self.__backend gets - assigned. + 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 + """ - if self.__backend: - # Another thread assigned it - return self.__backend - backend_name = CONF.database.backend - self.__use_tpool = CONF.database.use_tpool - if self.__use_tpool: - from eventlet import tpool - self.__tpool = tpool - # Import the untranslated name if we don't have a - # mapping. - backend_path = self.__backend_mapping.get(backend_name, - backend_name) - backend_mod = importutils.import_module(backend_path) - self.__backend = backend_mod.get_backend() - return self.__backend + + 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): - backend = self.__backend or self.__get_backend() - attr = getattr(backend, key) - if not self.__use_tpool or not hasattr(attr, '__call__'): - return attr + if not self._backend: + self._load_backend() - def tpool_wrapper(*args, **kwargs): - return self.__tpool.execute(attr, *args, **kwargs) + 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) - functools.update_wrapper(tpool_wrapper, attr) - return tpool_wrapper + return attr diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/exception.py ironic-2014.1~rc1/ironic/openstack/common/db/exception.py --- ironic-2014.1~b3/ironic/openstack/common/db/exception.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/exception.py 2014-04-01 19:49:34.000000000 +0000 @@ -16,14 +16,16 @@ """DB related custom exceptions.""" -from ironic.openstack.common.gettextutils import _ # noqa +import six + +from ironic.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__(str(inner_exception)) + super(DBError, self).__init__(six.text_type(inner_exception)) class DBDuplicateEntry(DBError): @@ -46,7 +48,7 @@ class DbMigrationError(DBError): """Wraps migration specific exception.""" def __init__(self, message=None): - super(DbMigrationError, self).__init__(str(message)) + super(DbMigrationError, self).__init__(message) class DBConnectionError(DBError): diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/options.py ironic-2014.1~rc1/ironic/openstack/common/db/options.py --- ironic-2014.1~b3/ironic/openstack/common/db/options.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/options.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,168 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# 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='ironic.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))] diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_alembic.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_alembic.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_alembic.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_alembic.py 2014-04-01 19:49:34.000000000 +0000 @@ -40,6 +40,7 @@ repo_path = migration_config.get('alembic_repo_path') if repo_path: self.config.set_main_option('script_location', repo_path) + self.db_url = migration_config['db_url'] def upgrade(self, version): return alembic.command.upgrade(self.config, version or 'head') @@ -50,7 +51,7 @@ return alembic.command.downgrade(self.config, version) def version(self): - engine = db_session.get_engine() + engine = db_session.create_engine(self.db_url) with engine.connect() as conn: context = alembic_migration.MigrationContext.configure(conn) return context.get_current_revision() diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_migrate.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_migrate.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_migrate.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/migration_cli/ext_migrate.py 2014-04-01 19:49:34.000000000 +0000 @@ -10,12 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. +import logging import os from ironic.openstack.common.db.sqlalchemy import migration from ironic.openstack.common.db.sqlalchemy.migration_cli import ext_base -from ironic.openstack.common.gettextutils import _ # noqa -from ironic.openstack.common import log as logging +from ironic.openstack.common.db.sqlalchemy import session as db_session +from ironic.openstack.common.gettextutils import _LE LOG = logging.getLogger(__name__) @@ -33,6 +34,8 @@ def __init__(self, migration_config): self.repository = migration_config.get('migration_repo_path', '') self.init_version = migration_config.get('init_version', 0) + self.db_url = migration_config['db_url'] + self.engine = db_session.create_engine(self.db_url) @property def enabled(self): @@ -41,7 +44,7 @@ def upgrade(self, version): version = None if version == 'head' else version return migration.db_sync( - self.repository, version, + self.engine, self.repository, version, init_version=self.init_version) def downgrade(self, version): @@ -51,16 +54,16 @@ version = self.init_version version = int(version) return migration.db_sync( - self.repository, version, + self.engine, self.repository, version, init_version=self.init_version) except ValueError: LOG.error( - _('Migration number for migrate plugin must be valid ' - 'integer or empty, if you want to downgrade ' - 'to initial state') + _LE('Migration number for migrate plugin must be valid ' + 'integer or empty, if you want to downgrade ' + 'to initial state') ) raise def version(self): return migration.db_version( - self.repository, init_version=self.init_version) + self.engine, self.repository, init_version=self.init_version) diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/migration.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/migration.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/migration.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/migration.py 2014-04-01 19:49:34.000000000 +0000 @@ -51,13 +51,9 @@ from sqlalchemy.schema import UniqueConstraint from ironic.openstack.common.db import exception -from ironic.openstack.common.db.sqlalchemy import session as db_session from ironic.openstack.common.gettextutils import _ -get_engine = db_session.get_engine - - def _get_unique_constraints(self, table): """Retrieve information about existing unique constraints of the table @@ -172,11 +168,12 @@ sqlite.SQLiteConstraintGenerator) -def db_sync(abs_path, version=None, init_version=0): +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 @@ -190,18 +187,23 @@ raise exception.DbMigrationError( message=_("version should be an integer")) - current_version = db_version(abs_path, init_version) + current_version = db_version(engine, abs_path, init_version) repository = _find_migrate_repo(abs_path) - _db_schema_sanity_check() + _db_schema_sanity_check(engine) if version is None or version > current_version: - return versioning_api.upgrade(get_engine(), repository, version) + return versioning_api.upgrade(engine, repository, version) else: - return versioning_api.downgrade(get_engine(), repository, + return versioning_api.downgrade(engine, repository, version) -def _db_schema_sanity_check(): - engine = get_engine() +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 ' @@ -216,23 +218,23 @@ ) % ','.join(table_names)) -def db_version(abs_path, init_version): +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(get_engine(), repository) + return versioning_api.db_version(engine, repository) except versioning_exceptions.DatabaseNotControlledError: meta = sqlalchemy.MetaData() - engine = get_engine() meta.reflect(bind=engine) tables = meta.tables if len(tables) == 0 or 'alembic_version' in tables: - db_version_control(abs_path, init_version) - return versioning_api.db_version(get_engine(), repository) + db_version_control(engine, abs_path, version=init_version) + return versioning_api.db_version(engine, repository) else: raise exception.DbMigrationError( message=_( @@ -241,17 +243,18 @@ "manually.")) -def db_version_control(abs_path, version=None): +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(get_engine(), repository, version) + versioning_api.version_control(engine, repository, version) return version diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/models.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/models.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/models.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/models.py 2014-04-01 19:49:34.000000000 +0000 @@ -26,7 +26,6 @@ from sqlalchemy import DateTime from sqlalchemy.orm import object_mapper -from ironic.openstack.common.db.sqlalchemy import session as sa from ironic.openstack.common import timeutils @@ -34,10 +33,9 @@ """Base class for models.""" __table_initialized__ = False - def save(self, session=None): + def save(self, session): """Save this object.""" - if not session: - session = sa.get_session() + # NOTE(boris-42): This part of code should be look like: # session.add(self) # session.flush() @@ -110,7 +108,7 @@ deleted_at = Column(DateTime) deleted = Column(Integer, default=0) - def soft_delete(self, session=None): + def soft_delete(self, session): """Mark this object as deleted.""" self.deleted = self.id self.deleted_at = timeutils.utcnow() diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/session.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/session.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/session.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/session.py 2014-04-01 19:49:34.000000000 +0000 @@ -16,33 +16,24 @@ """Session Handling for SQLAlchemy backend. -Initializing: - -* Call set_defaults with the minimal of the following kwargs: - sql_connection, sqlite_db - - Example:: - - session.set_defaults( - sql_connection="sqlite:///var/lib/ironic/sqlite.db", - sqlite_db="/var/lib/ironic/sqlite.db") - 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 +* 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. + .. 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(). + the code around quotas and `reservation_rollback()`. + + Examples: - Examples:: + .. code:: python def get_foo(context, foo): return (model_query(context, models.Foo). @@ -61,28 +52,29 @@ return foo_ref -* Within the scope of a single method, keeping 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. +* 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. + .. 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() + do not need to call `model.save()`: - :: + .. code:: python def create_many_foo(context, foos): - session = get_session() + session = sessionmaker() with session.begin(): for foo in foos: foo_ref = models.Foo() @@ -90,7 +82,7 @@ session.add(foo_ref) def update_bar(context, foo_id, newbar): - session = get_session() + session = sessionmaker() with session.begin(): foo_ref = (model_query(context, models.Foo, session). filter_by(id=foo_id). @@ -99,11 +91,16 @@ 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:: + .. 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). @@ -114,21 +111,25 @@ filter_by(id=subq.as_scalar()). update({'bar': newbar})) - For reference, this emits approximately the following SQL statement:: + 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: + .. 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 = get_session() + session = sessionmaker() try: with session.begin(): session.add(foo1) @@ -138,7 +139,7 @@ * 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 + 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. @@ -151,10 +152,10 @@ becomes less clear in this situation. When this is needed for code clarity, it should be clearly documented. - :: + .. code:: python def myfunc(foo): - session = get_session() + session = sessionmaker() with session.begin(): # do some database things bar = _private_func(foo, session) @@ -162,7 +163,7 @@ def _private_func(foo, session=None): if not session: - session = get_session() + session = sessionmaker() with session.begin(subtransaction=True): # do some other database things return bar @@ -172,13 +173,13 @@ * Don't keep a transaction open any longer than necessary. - This means that your "with session.begin()" block should be as short + 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. +* Avoid ``with_lockmode('UPDATE')`` when possible. - In MySQL/InnoDB, when a "SELECT ... FOR UPDATE" query does not match + 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 @@ -189,15 +190,18 @@ 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. + 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:: +* 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 @@ -205,15 +209,16 @@ Efficient use of soft deletes: -* There are two possible ways to mark a record as deleted:: +* There are two possible ways to mark a record as deleted: + `model.soft_delete()` and `query.soft_delete()`. - 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. - model.soft_delete() method works with single already fetched entry. - query.soft_delete() makes only one db request for all entries that correspond - to query. +* In almost all cases you should use `query.soft_delete()`. Some examples: -* 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() @@ -222,7 +227,7 @@ def complex_soft_delete_with_synchronization_bar(session=None): if session is None: - session = get_session() + session = sessionmaker() with session.begin(subtransactions=True): count = (model_query(BarModel). find(some_condition). @@ -232,24 +237,26 @@ if count == 0: raise Exception("0 entries were soft deleted") -* There is only one situation where model.soft_delete() is appropriate: when +* 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 = get_session() + 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 query.soft_delete() method:: + then soft delete them you should use the `query.soft_delete()` method: + + .. code:: python def soft_delete_multi_models(): - session = get_session() + session = sessionmaker() with session.begin(): query = (model_query(BarModel, session=session). find(some_condition)) @@ -260,22 +267,22 @@ # 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 + 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 os.path +import logging import re import time -from oslo.config import cfg import six from sqlalchemy import exc as sqla_exc from sqlalchemy.interfaces import PoolListener @@ -284,151 +291,12 @@ from sqlalchemy.sql.expression import literal_column from ironic.openstack.common.db import exception -from ironic.openstack.common.gettextutils import _ -from ironic.openstack.common import log as logging +from ironic.openstack.common.gettextutils import _LE, _LW, _LI from ironic.openstack.common import timeutils -sqlite_db_opts = [ - cfg.StrOpt('sqlite_db', - default='ironic.sqlite', - help='The file name to use with SQLite'), - cfg.BoolOpt('sqlite_synchronous', - default=True, - help='If True, SQLite uses synchronous mode'), -] - -database_opts = [ - cfg.StrOpt('connection', - default='sqlite:///' + - os.path.abspath(os.path.join(os.path.dirname(__file__), - '../', '$sqlite_db')), - 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('slave_connection', - default='', - secret=True, - help='The SQLAlchemy connection string used to connect to the ' - 'slave database'), - 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'), -] - -CONF = cfg.CONF -CONF.register_opts(sqlite_db_opts) -CONF.register_opts(database_opts, 'database') LOG = logging.getLogger(__name__) -_ENGINE = None -_MAKER = None -_SLAVE_ENGINE = None -_SLAVE_MAKER = None - - -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) - cfg.set_defaults(sqlite_db_opts, - 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 cleanup(): - global _ENGINE, _MAKER - global _SLAVE_ENGINE, _SLAVE_MAKER - - if _MAKER: - _MAKER.close_all() - _MAKER = None - if _ENGINE: - _ENGINE.dispose() - _ENGINE = None - if _SLAVE_MAKER: - _SLAVE_MAKER.close_all() - _SLAVE_MAKER = None - if _SLAVE_ENGINE: - _SLAVE_ENGINE.dispose() - _SLAVE_ENGINE = None - class SqliteForeignKeysListener(PoolListener): """Ensures that the foreign key constraints are enforced in SQLite. @@ -441,30 +309,6 @@ dbapi_con.execute('pragma foreign_keys=ON') -def get_session(autocommit=True, expire_on_commit=False, sqlite_fk=False, - slave_session=False, mysql_traditional_mode=False): - """Return a SQLAlchemy session.""" - global _MAKER - global _SLAVE_MAKER - maker = _MAKER - - if slave_session: - maker = _SLAVE_MAKER - - if maker is None: - engine = get_engine(sqlite_fk=sqlite_fk, slave_engine=slave_session, - mysql_traditional_mode=mysql_traditional_mode) - maker = get_maker(engine, autocommit, expire_on_commit) - - if slave_session: - _SLAVE_MAKER = maker - else: - _MAKER = maker - - session = maker() - return session - - # note(boris-42): In current versions of DB backends unique constraint # violation messages follow the structure: # @@ -473,9 +317,9 @@ # N columns - (IntegrityError) column c1, c2, ..., N are not unique # # sqlite since 3.7.16: -# 1 column - (IntegrityError) UNIQUE constraint failed: k1 +# 1 column - (IntegrityError) UNIQUE constraint failed: tbl.k1 # -# N columns - (IntegrityError) UNIQUE constraint failed: k1, k2 +# N columns - (IntegrityError) UNIQUE constraint failed: tbl.k1, tbl.k2 # # postgres: # 1 column - (IntegrityError) duplicate key value violates unique @@ -488,11 +332,20 @@ # '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,.*'([^\']+)'\"\)$"),) + "mysql": (re.compile(r"^.*\(1062,.*'([^\']+)'\"\)$"),), + "ibm_db_sa": (re.compile(r"^.*SQL0803N.*$"),), } @@ -514,7 +367,7 @@ return [columns] return columns[len(uniqbase):].split("0")[1:] - if engine_name not in ["mysql", "sqlite", "postgresql"]: + if engine_name not in ["ibm_db_sa", "mysql", "sqlite", "postgresql"]: return # FIXME(johannes): The usage of the .message attribute has been @@ -529,10 +382,15 @@ else: return - columns = match.group(1) + # 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 = columns.strip().split(", ") + 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) @@ -570,57 +428,39 @@ 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(*args, **kwargs): + def _wrap(self, *args, **kwargs): try: - return f(*args, **kwargs) + return f(self, *args, **kwargs) except UnicodeEncodeError: raise exception.DBInvalidUnicodeParameter() - # 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.OperationalError as e: - _raise_if_deadlock_error(e, get_engine().name) + _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, get_engine().name) + _raise_if_duplicate_entry_error(e, self.bind.dialect.name) raise exception.DBError(e) except Exception as e: - LOG.exception(_('DB exception wrapped.')) + LOG.exception(_LE('DB exception wrapped.')) raise exception.DBError(e) return _wrap -def get_engine(sqlite_fk=False, slave_engine=False, - mysql_traditional_mode=False): - """Return a SQLAlchemy engine.""" - global _ENGINE - global _SLAVE_ENGINE - engine = _ENGINE - db_uri = CONF.database.connection - - if slave_engine: - engine = _SLAVE_ENGINE - db_uri = CONF.database.slave_connection - - if engine is None: - engine = create_engine(db_uri, sqlite_fk=sqlite_fk, - mysql_traditional_mode=mysql_traditional_mode) - if slave_engine: - _SLAVE_ENGINE = engine - else: - _ENGINE = engine - - return engine - - def _synchronous_switch_listener(dbapi_conn, connection_rec): """Switch sqlite connections to non-synchronous mode.""" dbapi_conn.execute("PRAGMA synchronous = OFF") @@ -662,7 +502,7 @@ cursor.execute(ping_sql) except Exception as ex: if engine.dialect.is_disconnect(ex, dbapi_conn, cursor): - msg = _('Database server has gone away: %s') % ex + msg = _LW('Database server has gone away: %s') % ex LOG.warning(msg) raise sqla_exc.DisconnectionError(msg) else: @@ -677,7 +517,44 @@ than a declared field just with warning. That is fraught with data corruption. """ - dbapi_con.cursor().execute("SET SESSION sql_mode = TRADITIONAL;") + _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): @@ -692,66 +569,79 @@ return False -def create_engine(sql_connection, sqlite_fk=False, - mysql_traditional_mode=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.""" - # NOTE(geekinutah): At this point we could be connecting to the normal - # db handle or the slave db handle. Things like - # _wrap_db_error aren't going to work well if their - # backends don't match. Let's check. - _assert_matching_drivers() + connection_dict = sqlalchemy.engine.url.make_url(sql_connection) engine_args = { - "pool_recycle": CONF.database.idle_timeout, - "echo": False, + "pool_recycle": idle_timeout, 'convert_unicode': True, } - # Map our SQL debug level to SQLAlchemy's options - if CONF.database.connection_debug >= 100: - engine_args['echo'] = 'debug' - elif CONF.database.connection_debug >= 50: - engine_args['echo'] = 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 CONF.database.connection == "sqlite://": + if sql_connection == "sqlite://": engine_args["poolclass"] = StaticPool engine_args["connect_args"] = {'check_same_thread': False} else: - if CONF.database.max_pool_size is not None: - engine_args['pool_size'] = CONF.database.max_pool_size - if CONF.database.max_overflow is not None: - engine_args['max_overflow'] = CONF.database.max_overflow - if CONF.database.pool_timeout is not None: - engine_args['pool_timeout'] = CONF.database.pool_timeout + 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']: - callback = functools.partial(_ping_listener, engine) - sqlalchemy.event.listen(engine, 'checkout', callback) - if mysql_traditional_mode: - sqlalchemy.event.listen(engine, 'checkout', _set_mode_traditional) - else: - LOG.warning(_("This application has not enabled MySQL traditional" - " mode, which means silent data corruption may" - " occur. Please encourage the application" - " developers to enable this mode.")) + 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 CONF.sqlite_synchronous: + if not sqlite_synchronous: sqlalchemy.event.listen(engine, 'connect', _synchronous_switch_listener) sqlalchemy.event.listen(engine, 'connect', _add_regexp_listener) - if (CONF.database.connection_trace and - engine.dialect.dbapi.__name__ == 'MySQLdb'): + if connection_trace and engine.dialect.dbapi.__name__ == 'MySQLdb': _patch_mysqldb_with_stacktrace_comments() try: @@ -760,15 +650,15 @@ if not _is_db_connection_error(e.args[0]): raise - remaining = CONF.database.max_retries + remaining = max_retries if remaining == -1: remaining = 'infinite' while True: - msg = _('SQL connection failed. %s attempts left.') + msg = _LW('SQL connection failed. %s attempts left.') LOG.warning(msg % remaining) if remaining != 'infinite': remaining -= 1 - time.sleep(CONF.database.retry_interval) + time.sleep(retry_interval) try: engine.connect() break @@ -855,13 +745,116 @@ setattr(MySQLdb.cursors.BaseCursor, '_do_query', _do_query) -def _assert_matching_drivers(): - """Make sure slave handle and normal handle have the same driver.""" - # NOTE(geekinutah): There's no use case for writing to one backend and - # reading from another. Who knows what the future holds? - if CONF.database.slave_connection == '': - return +class EngineFacade(object): + """A helper class for removing of global engine instances from ironic.db. + + As a library, ironic.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 ironic.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 + ironic.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] - normal = sqlalchemy.engine.url.make_url(CONF.database.connection) - slave = sqlalchemy.engine.url.make_url(CONF.database.slave_connection) - assert normal.drivername == slave.drivername + return self._session_maker(**kwargs) diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/test_base.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/test_base.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/test_base.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/test_base.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,149 @@ +# 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 ironic.openstack.common.db.sqlalchemy import session +from ironic.openstack.common.db.sqlalchemy import utils +from ironic.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 diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/test_migrations.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/test_migrations.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/test_migrations.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/test_migrations.py 2014-04-01 19:49:34.000000000 +0000 @@ -15,83 +15,43 @@ # 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 ironic.openstack.common.gettextutils import _ -from ironic.openstack.common import log as logging -from ironic.openstack.common.py3kcompat import urlutils +from ironic.openstack.common.db.sqlalchemy import utils +from ironic.openstack.common.gettextutils import _LE from ironic.openstack.common import test LOG = logging.getLogger(__name__) -def _get_connect_string(backend, user, passwd, database): - """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 - """ - if backend == "postgres": - backend = "postgresql+psycopg2" - elif backend == "mysql": - backend = "mysql+mysqldb" - else: - raise Exception("Unrecognized backend: '%s'" % backend) - - return ("%(backend)s://%(user)s:%(passwd)s@localhost/%(database)s" - % {'backend': backend, 'user': user, 'passwd': passwd, - 'database': 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('TEST_MYSQL_PRESENT') if present is None: - return _is_backend_avail('mysql', user, passwd, database) + 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 _is_backend_avail('postgres', user, passwd, database) + return utils.is_backend_avail(backend='postgres', + user=user, + passwd=passwd, + database=database) return present.lower() in ('', '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) - - def _set_db_lock(lock_path=None, lock_prefix=None): def decorator(f): @functools.wraps(f) @@ -100,10 +60,10 @@ path = lock_path or os.environ.get("IRONIC_LOCK_PATH") lock = lockfile.FileLock(os.path.join(path, lock_prefix)) with lock: - LOG.debug(_('Got lock "%s"') % f.__name__) + LOG.debug('Got lock "%s"' % f.__name__) return f(*args, **kwargs) finally: - LOG.debug(_('Lock released "%s"') % f.__name__) + LOG.debug('Lock released "%s"' % f.__name__) return wrapper return decorator @@ -166,7 +126,10 @@ "Failed to run: %s\n%s" % (cmd, output)) def _reset_pg(self, conn_pieces): - (user, password, database, host) = get_db_connection_info(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 @@ -190,7 +153,7 @@ def _reset_databases(self): for key, engine in self.engines.items(): conn_string = self.test_databases[key] - conn_pieces = urlutils.urlparse(conn_string) + conn_pieces = parse.urlparse(conn_string) engine.dispose() if conn_string.startswith('sqlite'): # We can just delete the SQLite database, which is @@ -205,7 +168,7 @@ # 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_db_connection_info(conn_pieces) + 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 " @@ -301,6 +264,6 @@ if check: check(engine, data) except Exception: - LOG.error("Failed to migrate to version %s on engine %s" % + LOG.error(_LE("Failed to migrate to version %s on engine %s") % (version, engine)) raise diff -Nru ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/utils.py ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/utils.py --- ironic-2014.1~b3/ironic/openstack/common/db/sqlalchemy/utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/db/sqlalchemy/utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -16,6 +16,7 @@ # License for the specific language governing permissions and limitations # under the License. +import logging import re from migrate.changeset import UniqueConstraint @@ -29,6 +30,7 @@ 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 @@ -36,9 +38,9 @@ from sqlalchemy import Table from sqlalchemy.types import NullType -from ironic.openstack.common.gettextutils import _ - -from ironic.openstack.common import log as logging +from ironic.openstack.common import context as request_context +from ironic.openstack.common.db.sqlalchemy import models +from ironic.openstack.common.gettextutils import _, _LI, _LW from ironic.openstack.common import timeutils @@ -94,7 +96,7 @@ 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(_('Id not in sort_keys; is sort_keys unique?')) + LOG.warning(_LW('Id not in sort_keys; is sort_keys unique?')) assert(not (sort_dir and sort_dirs)) @@ -157,6 +159,94 @@ 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. @@ -277,8 +367,8 @@ rows_to_delete_select = select([table.c.id]).where(delete_condition) for row in migrate_engine.execute(rows_to_delete_select).fetchall(): - LOG.info(_("Deleting duplicated row with id: %(id)s from table: " - "%(table)s") % dict(id=row[0], table=table_name)) + 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().\ @@ -497,3 +587,52 @@ 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) diff -Nru ironic-2014.1~b3/ironic/openstack/common/__init__.py ironic-2014.1~rc1/ironic/openstack/common/__init__.py --- ironic-2014.1~b3/ironic/openstack/common/__init__.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/__init__.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,2 @@ +import six +six.add_move(six.MovedModule('mox', 'mox', 'mox3.mox')) diff -Nru ironic-2014.1~b3/ironic/openstack/common/version.py ironic-2014.1~rc1/ironic/openstack/common/version.py --- ironic-2014.1~b3/ironic/openstack/common/version.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/openstack/common/version.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ - -# Copyright 2012 OpenStack Foundation -# 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. - -""" -Utilities for consuming the version from pkg_resources. -""" - -import pkg_resources - - -class VersionInfo(object): - - def __init__(self, package): - """Object that understands versioning for a package - :param package: name of the python package, such as glance, or - python-glanceclient - """ - self.package = package - self.release = None - self.version = None - self._cached_version = None - - def __str__(self): - """Make the VersionInfo object behave like a string.""" - return self.version_string() - - def __repr__(self): - """Include the name.""" - return "VersionInfo(%s:%s)" % (self.package, self.version_string()) - - def _get_version_from_pkg_resources(self): - """Get the version of the package from the pkg_resources record - associated with the package.""" - try: - requirement = pkg_resources.Requirement.parse(self.package) - provider = pkg_resources.get_provider(requirement) - return provider.version - except pkg_resources.DistributionNotFound: - # The most likely cause for this is running tests in a tree - # produced from a tarball where the package itself has not been - # installed into anything. Revert to setup-time logic. - from ironic.openstack.common import setup - return setup.get_version(self.package) - - def release_string(self): - """Return the full version of the package including suffixes indicating - VCS status. - """ - if self.release is None: - self.release = self._get_version_from_pkg_resources() - - return self.release - - def version_string(self): - """Return the short version minus any alpha/beta tags.""" - if self.version is None: - parts = [] - for part in self.release_string().split('.'): - if part[0].isdigit(): - parts.append(part) - else: - break - self.version = ".".join(parts) - - return self.version - - # Compatibility functions - canonical_version_string = version_string - version_string_with_vcs = release_string - - def cached_version_string(self, prefix=""): - """Generate an object which will expand in a string context to - the results of version_string(). We do this so that don't - call into pkg_resources every time we start up a program when - passing version information into the CONF constructor, but - rather only do the calculation when and if a version is requested - """ - if not self._cached_version: - self._cached_version = "%s%s" % (prefix, - self.version_string()) - return self._cached_version diff -Nru ironic-2014.1~b3/ironic/tests/api/test_acl.py ironic-2014.1~rc1/ironic/tests/api/test_acl.py --- ironic-2014.1~b3/ironic/tests/api/test_acl.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_acl.py 2014-04-01 19:49:34.000000000 +0000 @@ -83,6 +83,13 @@ # expect_errors should be set to True: If expect_errors is set to False # the response gets converted to JSON and we cannot read the response # code so easy. - response = self.get_json('/', expect_errors=True) + for route in ('/', '/v1'): + response = self.get_json(route, + path_prefix='', expect_errors=True) + self.assertEqual(200, response.status_int) - self.assertEqual(200, response.status_int) + def test_public_api_with_path_extensions(self): + for route in ('/v1/', '/v1.json', '/v1.xml'): + response = self.get_json(route, + path_prefix='', expect_errors=True) + self.assertEqual(200, response.status_int) diff -Nru ironic-2014.1~b3/ironic/tests/api/test_chassis.py ironic-2014.1~rc1/ironic/tests/api/test_chassis.py --- ironic-2014.1~b3/ironic/tests/api/test_chassis.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_chassis.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,381 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# 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 API /chassis/ methods. -""" - -import datetime - -import mock -from oslo.config import cfg - -from ironic.common import utils -from ironic.openstack.common import timeutils -from ironic.tests.api import base -from ironic.tests.api import utils as apiutils -from ironic.tests.db import utils as dbutils - - -class TestListChassis(base.FunctionalTest): - - def test_empty(self): - data = self.get_json('/chassis') - self.assertEqual([], data['chassis']) - - def test_one(self): - ndict = dbutils.get_test_chassis() - chassis = self.dbapi.create_chassis(ndict) - data = self.get_json('/chassis') - self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"]) - self.assertNotIn('extra', data['chassis'][0]) - self.assertNotIn('nodes', data['chassis'][0]) - - def test_detail(self): - cdict = dbutils.get_test_chassis() - chassis = self.dbapi.create_chassis(cdict) - data = self.get_json('/chassis/detail') - self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"]) - self.assertIn('extra', data['chassis'][0]) - self.assertIn('nodes', data['chassis'][0]) - - def test_detail_against_single(self): - cdict = dbutils.get_test_chassis() - chassis = self.dbapi.create_chassis(cdict) - response = self.get_json('/chassis/%s/detail' % chassis['uuid'], - expect_errors=True) - self.assertEqual(404, response.status_int) - - def test_many(self): - ch_list = [] - for id in range(5): - ndict = dbutils.get_test_chassis(id=id, - uuid=utils.generate_uuid()) - chassis = self.dbapi.create_chassis(ndict) - ch_list.append(chassis['uuid']) - data = self.get_json('/chassis') - self.assertEqual(len(ch_list), len(data['chassis'])) - uuids = [n['uuid'] for n in data['chassis']] - self.assertEqual(ch_list.sort(), uuids.sort()) - - def test_links(self): - uuid = utils.generate_uuid() - ndict = dbutils.get_test_chassis(id=1, uuid=uuid) - self.dbapi.create_chassis(ndict) - data = self.get_json('/chassis/%s' % uuid) - self.assertIn('links', data.keys()) - self.assertEqual(2, len(data['links'])) - self.assertIn(uuid, data['links'][0]['href']) - self.assertTrue(self.validate_link(data['links'][0]['href'])) - self.assertTrue(self.validate_link(data['links'][1]['href'])) - - def test_collection_links(self): - chassis = [] - for id in range(5): - ndict = dbutils.get_test_chassis(id=id, - uuid=utils.generate_uuid()) - ch = self.dbapi.create_chassis(ndict) - chassis.append(ch['uuid']) - data = self.get_json('/chassis/?limit=3') - self.assertEqual(3, len(data['chassis'])) - - next_marker = data['chassis'][-1]['uuid'] - self.assertIn(next_marker, data['next']) - - def test_collection_links_default_limit(self): - cfg.CONF.set_override('max_limit', 3, 'api') - chassis = [] - for id in range(5): - ndict = dbutils.get_test_chassis(id=id, - uuid=utils.generate_uuid()) - ch = self.dbapi.create_chassis(ndict) - chassis.append(ch['uuid']) - data = self.get_json('/chassis') - self.assertEqual(3, len(data['chassis'])) - - next_marker = data['chassis'][-1]['uuid'] - self.assertIn(next_marker, data['next']) - - def test_nodes_subresource_link(self): - ndict = dbutils.get_test_chassis() - self.dbapi.create_chassis(ndict) - - data = self.get_json('/chassis/%s' % ndict['uuid']) - self.assertIn('nodes', data.keys()) - - def test_nodes_subresource(self): - cdict = dbutils.get_test_chassis() - self.dbapi.create_chassis(cdict) - - for id in range(2): - ndict = dbutils.get_test_node(id=id, chassis_id=cdict['id'], - uuid=utils.generate_uuid()) - self.dbapi.create_node(ndict) - - data = self.get_json('/chassis/%s/nodes' % cdict['uuid']) - self.assertEqual(2, len(data['nodes'])) - self.assertNotIn('next', data.keys()) - - # Test collection pagination - data = self.get_json('/chassis/%s/nodes?limit=1' % cdict['uuid']) - self.assertEqual(1, len(data['nodes'])) - self.assertIn('next', data.keys()) - - def test_nodes_subresource_no_uuid(self): - response = self.get_json('/chassis/nodes', expect_errors=True) - self.assertEqual(400, response.status_int) - - def test_nodes_subresource_chassis_not_found(self): - non_existent_uuid = 'eeeeeeee-cccc-aaaa-bbbb-cccccccccccc' - response = self.get_json('/chassis/%s/nodes' % non_existent_uuid, - expect_errors=True) - self.assertEqual(404, response.status_int) - - -class TestPatch(base.FunctionalTest): - - def setUp(self): - super(TestPatch, self).setUp() - cdict = dbutils.get_test_chassis() - self.dbapi.create_chassis(cdict) - - def test_update_not_found(self): - uuid = utils.generate_uuid() - response = self.patch_json('/chassis/%s' % uuid, - [{'path': '/extra/a', 'value': 'b', - 'op': 'add'}], - expect_errors=True) - self.assertEqual(404, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - @mock.patch.object(timeutils, 'utcnow') - def test_replace_singular(self, mock_utcnow): - cdict = dbutils.get_test_chassis() - description = 'chassis-new-description' - test_time = datetime.datetime(2000, 1, 1, 0, 0) - - mock_utcnow.return_value = test_time - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/description', - 'value': description, 'op': 'replace'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/chassis/%s' % cdict['uuid']) - self.assertEqual(description, result['description']) - return_updated_at = timeutils.parse_isotime( - result['updated_at']).replace(tzinfo=None) - self.assertEqual(test_time, return_updated_at) - - def test_replace_multi(self): - extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} - cdict = dbutils.get_test_chassis(extra=extra, - uuid=utils.generate_uuid(), - id=None) - self.dbapi.create_chassis(cdict) - new_value = 'new value' - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/extra/foo2', - 'value': new_value, 'op': 'replace'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/chassis/%s' % cdict['uuid']) - - extra["foo2"] = new_value - self.assertEqual(extra, result['extra']) - - def test_remove_singular(self): - cdict = dbutils.get_test_chassis(extra={'a': 'b'}, - uuid=utils.generate_uuid(), - id=None) - self.dbapi.create_chassis(cdict) - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/description', 'op': 'remove'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/chassis/%s' % cdict['uuid']) - self.assertIsNone(result['description']) - - # Assert nothing else was changed - self.assertEqual(cdict['uuid'], result['uuid']) - self.assertEqual(cdict['extra'], result['extra']) - - def test_remove_multi(self): - extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} - cdict = dbutils.get_test_chassis(extra=extra, description="foobar", - uuid=utils.generate_uuid(), - id=None) - self.dbapi.create_chassis(cdict) - - # Removing one item from the collection - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/extra/foo2', 'op': 'remove'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/chassis/%s' % cdict['uuid']) - extra.pop("foo2") - self.assertEqual(extra, result['extra']) - - # Removing the collection - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/extra', 'op': 'remove'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/chassis/%s' % cdict['uuid']) - self.assertEqual({}, result['extra']) - - # Assert nothing else was changed - self.assertEqual(cdict['uuid'], result['uuid']) - self.assertEqual(cdict['description'], result['description']) - - def test_remove_non_existent_property_fail(self): - cdict = dbutils.get_test_chassis() - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/extra/non-existent', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_add_singular(self): - cdict = dbutils.get_test_chassis() - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/foo', 'value': 'bar', - 'op': 'add'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_int) - self.assertTrue(response.json['error_message']) - - def test_add_multi(self): - cdict = dbutils.get_test_chassis() - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/extra/foo1', 'value': 'bar1', - 'op': 'add'}, - {'path': '/extra/foo2', 'value': 'bar2', - 'op': 'add'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/chassis/%s' % cdict['uuid']) - expected = {"foo1": "bar1", "foo2": "bar2"} - self.assertEqual(expected, result['extra']) - - def test_patch_nodes_subresource(self): - cdict = dbutils.get_test_chassis() - response = self.patch_json('/chassis/%s/nodes' % cdict['uuid'], - [{'path': '/extra/foo', 'value': 'bar', - 'op': 'add'}], expect_errors=True) - self.assertEqual(403, response.status_int) - - def test_remove_uuid(self): - cdict = dbutils.get_test_chassis() - response = self.patch_json('/chassis/%s' % cdict['uuid'], - [{'path': '/uuid', 'op': 'remove'}], - expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - -class TestPost(base.FunctionalTest): - - @mock.patch.object(timeutils, 'utcnow') - def test_create_chassis(self, mock_utcnow): - cdict = apiutils.chassis_post_data() - test_time = datetime.datetime(2000, 1, 1, 0, 0) - mock_utcnow.return_value = test_time - - response = self.post_json('/chassis', cdict) - self.assertEqual(201, response.status_int) - result = self.get_json('/chassis/%s' % cdict['uuid']) - self.assertEqual(cdict['uuid'], result['uuid']) - self.assertFalse(result['updated_at']) - return_created_at = timeutils.parse_isotime( - result['created_at']).replace(tzinfo=None) - self.assertEqual(test_time, return_created_at) - - def test_create_chassis_generate_uuid(self): - cdict = apiutils.chassis_post_data() - del cdict['uuid'] - self.post_json('/chassis', cdict) - result = self.get_json('/chassis') - self.assertEqual(cdict['description'], - result['chassis'][0]['description']) - self.assertTrue(utils.is_uuid_like(result['chassis'][0]['uuid'])) - - def test_post_nodes_subresource(self): - cdict = dbutils.get_test_chassis() - self.dbapi.create_chassis(cdict) - ndict = apiutils.node_post_data(chassis_id=None) - ndict['chassis_uuid'] = cdict['uuid'] - response = self.post_json('/chassis/nodes', ndict, - expect_errors=True) - self.assertEqual(403, response.status_int) - - def test_create_chassis_valid_extra(self): - cdict = apiutils.chassis_post_data(extra={'foo': 123}) - self.post_json('/chassis', cdict) - result = self.get_json('/chassis/%s' % cdict['uuid']) - self.assertEqual(cdict['extra'], result['extra']) - - def test_create_chassis_invalid_extra(self): - cdict = apiutils.chassis_post_data(extra={'foo': 0.123}) - response = self.post_json('/chassis', cdict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_chassis_unicode_description(self): - descr = u'\u0430\u043c\u043e' - cdict = apiutils.chassis_post_data(description=descr) - self.post_json('/chassis', cdict) - result = self.get_json('/chassis/%s' % cdict['uuid']) - self.assertEqual(descr, result['description']) - - -class TestDelete(base.FunctionalTest): - - def test_delete_chassis(self): - cdict = dbutils.get_test_chassis() - self.dbapi.create_chassis(cdict) - self.delete('/chassis/%s' % cdict['uuid']) - response = self.get_json('/chassis/%s' % cdict['uuid'], - expect_errors=True) - self.assertEqual(404, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_delete_chassis_with_node(self): - cdict = dbutils.get_test_chassis() - self.dbapi.create_chassis(cdict) - ndict = dbutils.get_test_node(chassis_id=cdict['id']) - self.dbapi.create_node(ndict) - response = self.delete('/chassis/%s' % cdict['uuid'], - expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_delete_chassis_not_found(self): - uuid = utils.generate_uuid() - response = self.delete('/chassis/%s' % uuid, expect_errors=True) - self.assertEqual(404, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_delete_nodes_subresource(self): - cdict = dbutils.get_test_chassis() - self.dbapi.create_chassis(cdict) - response = self.delete('/chassis/%s/nodes' % cdict['uuid'], - expect_errors=True) - self.assertEqual(403, response.status_int) diff -Nru ironic-2014.1~b3/ironic/tests/api/test_drivers.py ironic-2014.1~rc1/ironic/tests/api/test_drivers.py --- ironic-2014.1~b3/ironic/tests/api/test_drivers.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_drivers.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -# 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. - -from testtools.matchers import HasLength - -from ironic.tests.api import base - - -class TestListDrivers(base.FunctionalTest): - - def test_drivers(self): - d1 = 'fake-driver1' - d2 = 'fake-driver2' - h1 = 'fake-host1' - h2 = 'fake-host2' - self.dbapi.register_conductor({'hostname': h1, 'drivers': [d1, d2]}) - self.dbapi.register_conductor({'hostname': h2, 'drivers': [d2]}) - expected = [{'name': d1, 'hosts': [h1]}, - {'name': d2, 'hosts': [h1, h2]}] - data = self.get_json('/drivers') - self.assertThat(data['drivers'], HasLength(2)) - self.assertEqual(sorted(expected), sorted(data['drivers'])) - - def test_drivers_no_active_conductor(self): - data = self.get_json('/drivers') - self.assertThat(data['drivers'], HasLength(0)) - self.assertEqual([], data['drivers']) diff -Nru ironic-2014.1~b3/ironic/tests/api/test_hooks.py ironic-2014.1~rc1/ironic/tests/api/test_hooks.py --- ironic-2014.1~b3/ironic/tests/api/test_hooks.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_hooks.py 2014-04-01 19:49:34.000000000 +0000 @@ -74,12 +74,24 @@ actual_msg = json.loads(response.json['error_message'])['faultstring'] self.assertEqual(msg, actual_msg) - def test_hook_server_debug_on(self): + def test_hook_server_debug_on_serverfault(self): cfg.CONF.set_override('debug', True) self.root_convert_mock.side_effect = Exception(self.MSG_WITH_TRACE) response = self.get_json('/', path_prefix='', expect_errors=True) + actual_msg = json.loads( + response.json['error_message'])['faultstring'] + self.assertEqual(self.MSG_WITHOUT_TRACE, actual_msg) + + def test_hook_server_debug_on_clientfault(self): + cfg.CONF.set_override('debug', True) + client_error = Exception(self.MSG_WITH_TRACE) + client_error.code = 400 + self.root_convert_mock.side_effect = client_error + + response = self.get_json('/', path_prefix='', expect_errors=True) + actual_msg = json.loads( response.json['error_message'])['faultstring'] self.assertEqual(self.MSG_WITH_TRACE, actual_msg) diff -Nru ironic-2014.1~b3/ironic/tests/api/test_nodes.py ironic-2014.1~rc1/ironic/tests/api/test_nodes.py --- ironic-2014.1~b3/ironic/tests/api/test_nodes.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_nodes.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,952 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# 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 API /nodes/ methods. -""" - -import datetime - -import mock -from oslo.config import cfg -from testtools.matchers import HasLength - -from ironic.common import exception -from ironic.common import states -from ironic.common import utils -from ironic.conductor import rpcapi -from ironic import objects -from ironic.openstack.common import timeutils -from ironic.tests.api import base -from ironic.tests.api import utils as apiutils -from ironic.tests.db import utils as dbutils - - -# NOTE(lucasagomes): When creating a node via API (POST) -# we have to use chassis_uuid -def post_get_test_node(**kw): - node = apiutils.node_post_data(**kw) - chassis = dbutils.get_test_chassis() - node['chassis_id'] = None - node['chassis_uuid'] = kw.get('chassis_uuid', chassis['uuid']) - return node - - -class TestListNodes(base.FunctionalTest): - - def setUp(self): - super(TestListNodes, self).setUp() - cdict = dbutils.get_test_chassis() - self.chassis = self.dbapi.create_chassis(cdict) - p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') - self.mock_gtf = p.start() - self.mock_gtf.return_value = 'test-topic' - self.addCleanup(p.stop) - - def _create_association_test_nodes(self): - #create some unassociated nodes - unassociated_nodes = [] - for id in range(3): - ndict = dbutils.get_test_node(id=id, - uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - unassociated_nodes.append(node['uuid']) - - #created some associated nodes - associated_nodes = [] - for id in range(3, 7): - ndict = dbutils.get_test_node( - id=id, - uuid=utils.generate_uuid(), - instance_uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - associated_nodes.append(node['uuid']) - return {'associated': associated_nodes, - 'unassociated': unassociated_nodes} - - def test_empty(self): - data = self.get_json('/nodes') - self.assertEqual([], data['nodes']) - - def test_one(self): - ndict = dbutils.get_test_node() - node = self.dbapi.create_node(ndict) - data = self.get_json('/nodes') - self.assertEqual(node['uuid'], data['nodes'][0]["uuid"]) - self.assertNotIn('driver', data['nodes'][0]) - self.assertNotIn('driver_info', data['nodes'][0]) - self.assertNotIn('extra', data['nodes'][0]) - self.assertNotIn('properties', data['nodes'][0]) - self.assertNotIn('chassis_uuid', data['nodes'][0]) - self.assertNotIn('reservation', data['nodes'][0]) - self.assertNotIn('maintenance', data['nodes'][0]) - self.assertNotIn('console_enabled', data['nodes'][0]) - self.assertNotIn('target_power_state', data['nodes'][0]) - self.assertNotIn('target_provision_state', data['nodes'][0]) - self.assertNotIn('provision_updated_at', data['nodes'][0]) - # never expose the chassis_id - self.assertNotIn('chassis_id', data['nodes'][0]) - - def test_detail(self): - ndict = dbutils.get_test_node() - node = self.dbapi.create_node(ndict) - data = self.get_json('/nodes/detail') - self.assertEqual(node['uuid'], data['nodes'][0]["uuid"]) - self.assertIn('driver', data['nodes'][0]) - self.assertIn('driver_info', data['nodes'][0]) - self.assertIn('extra', data['nodes'][0]) - self.assertIn('properties', data['nodes'][0]) - self.assertIn('chassis_uuid', data['nodes'][0]) - self.assertIn('reservation', data['nodes'][0]) - self.assertIn('maintenance', data['nodes'][0]) - self.assertIn('console_enabled', data['nodes'][0]) - self.assertIn('target_power_state', data['nodes'][0]) - self.assertIn('target_provision_state', data['nodes'][0]) - self.assertIn('provision_updated_at', data['nodes'][0]) - # never expose the chassis_id - self.assertNotIn('chassis_id', data['nodes'][0]) - - def test_detail_against_single(self): - ndict = dbutils.get_test_node() - node = self.dbapi.create_node(ndict) - response = self.get_json('/nodes/%s/detail' % node['uuid'], - expect_errors=True) - self.assertEqual(404, response.status_int) - - def test_many(self): - nodes = [] - for id in range(5): - ndict = dbutils.get_test_node(id=id, - uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - nodes.append(node['uuid']) - data = self.get_json('/nodes') - self.assertEqual(len(nodes), len(data['nodes'])) - - uuids = [n['uuid'] for n in data['nodes']] - self.assertEqual(sorted(nodes), sorted(uuids)) - - def test_links(self): - uuid = utils.generate_uuid() - ndict = dbutils.get_test_node(id=1, uuid=uuid) - self.dbapi.create_node(ndict) - data = self.get_json('/nodes/%s' % uuid) - self.assertIn('links', data.keys()) - self.assertEqual(2, len(data['links'])) - self.assertIn(uuid, data['links'][0]['href']) - self.assertTrue(self.validate_link(data['links'][0]['href'])) - self.assertTrue(self.validate_link(data['links'][1]['href'])) - - def test_collection_links(self): - nodes = [] - for id in range(5): - ndict = dbutils.get_test_node(id=id, - uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - nodes.append(node['uuid']) - data = self.get_json('/nodes/?limit=3') - self.assertEqual(3, len(data['nodes'])) - - next_marker = data['nodes'][-1]['uuid'] - self.assertIn(next_marker, data['next']) - - def test_collection_links_default_limit(self): - cfg.CONF.set_override('max_limit', 3, 'api') - nodes = [] - for id in range(5): - ndict = dbutils.get_test_node(id=id, - uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - nodes.append(node['uuid']) - data = self.get_json('/nodes') - self.assertEqual(3, len(data['nodes'])) - - next_marker = data['nodes'][-1]['uuid'] - self.assertIn(next_marker, data['next']) - - def test_ports_subresource_link(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - - data = self.get_json('/nodes/%s' % ndict['uuid']) - self.assertIn('ports', data.keys()) - - def test_ports_subresource(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - - for id in range(2): - pdict = dbutils.get_test_port(id=id, node_id=ndict['id'], - uuid=utils.generate_uuid(), - address='52:54:00:cf:2d:3%s' % id) - self.dbapi.create_port(pdict) - - data = self.get_json('/nodes/%s/ports' % ndict['uuid']) - self.assertEqual(2, len(data['ports'])) - self.assertNotIn('next', data.keys()) - - # Test collection pagination - data = self.get_json('/nodes/%s/ports?limit=1' % ndict['uuid']) - self.assertEqual(1, len(data['ports'])) - self.assertIn('next', data.keys()) - - def test_ports_subresource_noid(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - pdict = dbutils.get_test_port(node_id=ndict['id']) - self.dbapi.create_port(pdict) - # No node id specified - response = self.get_json('/nodes/ports', expect_errors=True) - self.assertEqual(400, response.status_int) - - def test_ports_subresource_node_not_found(self): - non_existent_uuid = 'eeeeeeee-cccc-aaaa-bbbb-cccccccccccc' - response = self.get_json('/nodes/%s/ports' % non_existent_uuid, - expect_errors=True) - self.assertEqual(404, response.status_int) - - @mock.patch.object(timeutils, 'utcnow') - def test_node_states(self, mock_utcnow): - fake_state = 'fake-state' - fake_error = 'fake-error' - test_time = datetime.datetime(2000, 1, 1, 0, 0) - mock_utcnow.return_value = test_time - ndict = dbutils.get_test_node(power_state=fake_state, - target_power_state=fake_state, - provision_state=fake_state, - target_provision_state=fake_state, - provision_updated_at=test_time, - last_error=fake_error) - self.dbapi.create_node(ndict) - data = self.get_json('/nodes/%s/states' % ndict['uuid']) - self.assertEqual(fake_state, data['power_state']) - self.assertEqual(fake_state, data['target_power_state']) - self.assertEqual(fake_state, data['provision_state']) - self.assertEqual(fake_state, data['target_provision_state']) - prov_up_at = timeutils.parse_isotime( - data['provision_updated_at']).replace(tzinfo=None) - self.assertEqual(test_time, prov_up_at) - self.assertEqual(fake_error, data['last_error']) - self.assertFalse(data['console_enabled']) - - def test_node_by_instance_uuid(self): - ndict = dbutils.get_test_node(uuid=utils.generate_uuid(), - instance_uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - instance_uuid = node['instance_uuid'] - - data = self.get_json('/nodes?instance_uuid=%s' % instance_uuid) - - self.assertThat(data['nodes'], HasLength(1)) - self.assertEqual(node['instance_uuid'], - data['nodes'][0]["instance_uuid"]) - - def test_node_by_instance_uuid_wrong_uuid(self): - ndict = dbutils.get_test_node(uuid=utils.generate_uuid(), - instance_uuid=utils.generate_uuid()) - self.dbapi.create_node(ndict) - wrong_uuid = utils.generate_uuid() - - data = self.get_json('/nodes?instance_uuid=%s' % wrong_uuid) - - self.assertThat(data['nodes'], HasLength(0)) - - def test_node_by_instance_uuid_invalid_uuid(self): - response = self.get_json('/nodes?instance_uuid=fake', - expect_errors=True) - - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - - def test_associated_nodes_insensitive(self): - associated_nodes = self._create_association_test_nodes().\ - get('associated') - - data = self.get_json('/nodes?associated=true') - data1 = self.get_json('/nodes?associated=True') - - uuids = [n['uuid'] for n in data['nodes']] - uuids1 = [n['uuid'] for n in data1['nodes']] - self.assertEqual(sorted(associated_nodes), sorted(uuids1)) - self.assertEqual(sorted(associated_nodes), sorted(uuids)) - - def test_associated_nodes_error(self): - self._create_association_test_nodes() - response = self.get_json('/nodes?associated=blah', expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_unassociated_nodes_insensitive(self): - unassociated_nodes = self._create_association_test_nodes().\ - get('unassociated') - - data = self.get_json('/nodes?associated=false') - data1 = self.get_json('/nodes?associated=FALSE') - - uuids = [n['uuid'] for n in data['nodes']] - uuids1 = [n['uuid'] for n in data1['nodes']] - self.assertEqual(sorted(unassociated_nodes), sorted(uuids1)) - self.assertEqual(sorted(unassociated_nodes), sorted(uuids)) - - def test_unassociated_nodes_with_limit(self): - unassociated_nodes = self._create_association_test_nodes().\ - get('unassociated') - - data = self.get_json('/nodes?associated=False&limit=2') - - self.assertThat(data['nodes'], HasLength(2)) - self.assertTrue(data['nodes'][0]['uuid'] in unassociated_nodes) - - def test_next_link_with_association(self): - self._create_association_test_nodes() - data = self.get_json('/nodes/?limit=3&associated=True') - self.assertThat(data['nodes'], HasLength(3)) - self.assertIn('associated=True', data['next']) - - def test_detail_with_association_filter(self): - associated_nodes = self._create_association_test_nodes().\ - get('associated') - data = self.get_json('/nodes/detail?associated=true') - self.assertIn('driver', data['nodes'][0]) - self.assertEqual(len(associated_nodes), len(data['nodes'])) - - def test_next_link_with_association_with_detail(self): - self._create_association_test_nodes() - data = self.get_json('/nodes/detail?limit=3&associated=true') - self.assertThat(data['nodes'], HasLength(3)) - self.assertIn('driver', data['nodes'][0]) - self.assertIn('associated=True', data['next']) - - def test_detail_with_instance_uuid(self): - ndict = dbutils.get_test_node(uuid=utils.generate_uuid(), - instance_uuid=utils.generate_uuid()) - node = self.dbapi.create_node(ndict) - instance_uuid = node['instance_uuid'] - - data = self.get_json('/nodes/detail?instance_uuid=%s' % instance_uuid) - - self.assertEqual(node['instance_uuid'], - data['nodes'][0]["instance_uuid"]) - self.assertIn('driver', data['nodes'][0]) - self.assertIn('driver_info', data['nodes'][0]) - self.assertIn('extra', data['nodes'][0]) - self.assertIn('properties', data['nodes'][0]) - self.assertIn('chassis_uuid', data['nodes'][0]) - # never expose the chassis_id - self.assertNotIn('chassis_id', data['nodes'][0]) - - def test_maintenance_nodes(self): - nodes = [] - for id in range(5): - ndict = dbutils.get_test_node(id=id, uuid=utils.generate_uuid(), - maintenance=id % 2) - node = self.dbapi.create_node(ndict) - nodes.append(node) - - data = self.get_json('/nodes?maintenance=true') - uuids = [n['uuid'] for n in data['nodes']] - test_uuids_1 = [n.uuid for n in nodes if n.maintenance] - self.assertEqual(sorted(test_uuids_1), sorted(uuids)) - - data = self.get_json('/nodes?maintenance=false') - uuids = [n['uuid'] for n in data['nodes']] - test_uuids_0 = [n.uuid for n in nodes if not n.maintenance] - self.assertEqual(sorted(test_uuids_0), sorted(uuids)) - - def test_maintenance_nodes_error(self): - response = self.get_json('/nodes?associated=true&maintenance=blah', - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_maintenance_nodes_associated(self): - self._create_association_test_nodes() - ndict = dbutils.get_test_node(instance_uuid=utils.generate_uuid(), - maintenance=True) - node = self.dbapi.create_node(ndict) - - data = self.get_json('/nodes?associated=true&maintenance=false') - uuids = [n['uuid'] for n in data['nodes']] - self.assertNotIn(node.uuid, uuids) - data = self.get_json('/nodes?associated=true&maintenance=true') - uuids = [n['uuid'] for n in data['nodes']] - self.assertIn(node.uuid, uuids) - data = self.get_json('/nodes?associated=true&maintenance=TruE') - uuids = [n['uuid'] for n in data['nodes']] - self.assertIn(node.uuid, uuids) - - def test_get_console_information(self): - node = self.dbapi.create_node(dbutils.get_test_node()) - expected_data = {'test': 'test-data'} - with mock.patch.object(rpcapi.ConductorAPI, - 'get_console_information') as mock_gci: - mock_gci.return_value = expected_data - data = self.get_json('/nodes/%s/states/console' % node.uuid) - self.assertEqual(expected_data, data) - mock_gci.assert_called_once_with(mock.ANY, node.uuid, 'test-topic') - - def test_get_console_information_not_supported(self): - node = self.dbapi.create_node(dbutils.get_test_node()) - with mock.patch.object(rpcapi.ConductorAPI, - 'get_console_information') as mock_gci: - mock_gci.side_effect = exception.UnsupportedDriverExtension( - extension='console', driver='test-driver') - ret = self.get_json('/nodes/%s/states/console' % node.uuid, - expect_errors=True) - self.assertEqual(400, ret.status_code) - mock_gci.assert_called_once_with(mock.ANY, node.uuid, 'test-topic') - - -class TestPatch(base.FunctionalTest): - - def setUp(self): - super(TestPatch, self).setUp() - cdict = dbutils.get_test_chassis() - self.chassis = self.dbapi.create_chassis(cdict) - ndict = dbutils.get_test_node() - self.node = self.dbapi.create_node(ndict) - p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') - self.mock_gtf = p.start() - self.mock_gtf.return_value = 'test-topic' - self.addCleanup(p.stop) - p = mock.patch.object(rpcapi.ConductorAPI, 'update_node') - self.mock_update_node = p.start() - self.addCleanup(p.stop) - p = mock.patch.object(rpcapi.ConductorAPI, 'change_node_power_state') - self.mock_cnps = p.start() - self.addCleanup(p.stop) - - def test_update_ok(self): - self.mock_update_node.return_value = self.node - self.mock_update_node.return_value.updated_at = \ - "2013-12-03T06:20:41.184720+00:00" - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/instance_uuid', - 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', - 'op': 'replace'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - self.assertEqual(self.mock_update_node.return_value.updated_at, - timeutils.parse_isotime(response.json['updated_at'])) - self.mock_update_node.assert_called_once_with( - mock.ANY, mock.ANY, 'test-topic') - - def test_update_state(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'power_state': 'new state'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_update_fails_bad_driver_info(self): - fake_err = 'Fake Error Message' - self.mock_update_node.side_effect = exception.InvalidParameterValue( - fake_err) - - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/driver_info/this', - 'value': 'foo', - 'op': 'add'}, - {'path': '/driver_info/that', - 'value': 'bar', - 'op': 'add'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - - self.mock_update_node.assert_called_once_with( - mock.ANY, mock.ANY, 'test-topic') - - def test_update_fails_bad_driver(self): - self.mock_gtf.side_effect = exception.NoValidHost('Fake Error') - - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/driver', - 'value': 'bad-driver', - 'op': 'replace'}], - expect_errors=True) - - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - - def test_update_fails_bad_state(self): - fake_err = 'Fake Power State' - self.mock_update_node.side_effect = exception.NodeInWrongPowerState( - node=self.node['uuid'], pstate=fake_err) - - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/instance_uuid', - 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', - 'op': 'replace'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(409, response.status_code) - - self.mock_update_node.assert_called_once_with( - mock.ANY, mock.ANY, 'test-topic') - - def test_add_ok(self): - self.mock_update_node.return_value = self.node - - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/extra/foo', - 'value': 'bar', - 'op': 'add'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - - self.mock_update_node.assert_called_once_with( - mock.ANY, mock.ANY, 'test-topic') - - def test_add_fail(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/foo', 'value': 'bar', 'op': 'add'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_remove_ok(self): - self.mock_update_node.return_value = self.node - - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/extra', - 'op': 'remove'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - - self.mock_update_node.assert_called_once_with( - mock.ANY, mock.ANY, 'test-topic') - - def test_remove_non_existent_property_fail(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/extra/non-existent', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_update_state_in_progress(self): - ndict = dbutils.get_test_node(id=99, uuid=utils.generate_uuid(), - target_power_state=states.POWER_OFF) - node = self.dbapi.create_node(ndict) - response = self.patch_json('/nodes/%s' % node['uuid'], - [{'path': '/extra/foo', 'value': 'bar', - 'op': 'add'}], expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(409, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_patch_ports_subresource(self): - response = self.patch_json('/nodes/%s/ports' % self.node['uuid'], - [{'path': '/extra/foo', 'value': 'bar', - 'op': 'add'}], expect_errors=True) - self.assertEqual(403, response.status_int) - - def test_remove_uuid(self): - ndict = dbutils.get_test_node() - response = self.patch_json('/nodes/%s' % ndict['uuid'], - [{'path': '/uuid', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_remove_mandatory_field(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/driver', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_replace_non_existent_chassis_uuid(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/chassis_uuid', - 'value': 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa', - 'op': 'replace'}], expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_remove_internal_field(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/last_error', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_replace_internal_field(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/power_state', 'op': 'replace', - 'value': 'fake-state'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_replace_maintenance(self): - self.mock_update_node.return_value = self.node - - response = self.patch_json('/nodes/%s' % self.node.uuid, - [{'path': '/maintenance', 'op': 'replace', - 'value': 'true'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - - self.mock_update_node.assert_called_once_with( - mock.ANY, mock.ANY, 'test-topic') - - def test_replace_consoled_enabled(self): - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/console_enabled', - 'op': 'replace', 'value': True}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_replace_provision_updated_at(self): - test_time = '2000-01-01 00:00:00' - response = self.patch_json('/nodes/%s' % self.node['uuid'], - [{'path': '/provision_updated_at', - 'op': 'replace', 'value': test_time}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - -class TestPost(base.FunctionalTest): - - def setUp(self): - super(TestPost, self).setUp() - cdict = dbutils.get_test_chassis() - self.chassis = self.dbapi.create_chassis(cdict) - p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') - self.mock_gtf = p.start() - self.mock_gtf.return_value = 'test-topic' - self.addCleanup(p.stop) - - @mock.patch.object(timeutils, 'utcnow') - def test_create_node(self, mock_utcnow): - ndict = post_get_test_node() - test_time = datetime.datetime(2000, 1, 1, 0, 0) - mock_utcnow.return_value = test_time - response = self.post_json('/nodes', ndict) - self.assertEqual(201, response.status_int) - result = self.get_json('/nodes/%s' % ndict['uuid']) - self.assertEqual(ndict['uuid'], result['uuid']) - self.assertFalse(result['updated_at']) - return_created_at = timeutils.parse_isotime( - result['created_at']).replace(tzinfo=None) - self.assertEqual(test_time, return_created_at) - - def test_create_node_valid_extra(self): - ndict = post_get_test_node(extra={'foo': 123}) - self.post_json('/nodes', ndict) - result = self.get_json('/nodes/%s' % ndict['uuid']) - self.assertEqual(ndict['extra'], result['extra']) - - def test_create_node_invalid_extra(self): - ndict = post_get_test_node(extra={'foo': 0.123}) - response = self.post_json('/nodes', ndict, expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_vendor_passthru_ok(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - uuid = ndict['uuid'] - info = {'foo': 'bar'} - - with mock.patch.object( - rpcapi.ConductorAPI, 'vendor_passthru') as mock_vendor: - mock_vendor.return_value = 'OK' - response = self.post_json('/nodes/%s/vendor_passthru/test' % uuid, - info, expect_errors=False) - mock_vendor.assert_called_once_with( - mock.ANY, uuid, 'test', info, 'test-topic') - self.assertEqual('"OK"', response.body) - self.assertEqual(202, response.status_code) - - def test_vendor_passthru_no_such_method(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - uuid = ndict['uuid'] - info = {'foo': 'bar'} - - with mock.patch.object( - rpcapi.ConductorAPI, 'vendor_passthru') as mock_vendor: - mock_vendor.side_effect = exception.UnsupportedDriverExtension( - {'driver': ndict['driver'], - 'node': uuid, - 'extension': 'test'}) - response = self.post_json('/nodes/%s/vendor_passthru/test' % uuid, - info, expect_errors=True) - mock_vendor.assert_called_once_with( - mock.ANY, uuid, 'test', info, 'test-topic') - self.assertEqual(400, response.status_code) - - def test_vendor_passthru_without_method(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - response = self.post_json('/nodes/%s/vendor_passthru' % ndict['uuid'], - {'foo': 'bar'}, expect_errors=True) - self.assertEqual('application/json', response.content_type, ) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_post_ports_subresource(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - pdict = apiutils.port_post_data(node_id=None) - pdict['node_uuid'] = ndict['uuid'] - response = self.post_json('/nodes/ports', pdict, - expect_errors=True) - self.assertEqual(403, response.status_int) - - def test_create_node_no_mandatory_field_driver(self): - ndict = post_get_test_node() - del ndict['driver'] - response = self.post_json('/nodes', ndict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_node_invalid_driver(self): - ndict = post_get_test_node() - self.mock_gtf.side_effect = exception.NoValidHost('Fake Error') - response = self.post_json('/nodes', ndict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_node_no_chassis_uuid(self): - ndict = post_get_test_node() - del ndict['chassis_uuid'] - response = self.post_json('/nodes', ndict) - self.assertEqual('application/json', response.content_type) - self.assertEqual(201, response.status_int) - - def test_create_node_chassis_uuid_not_found(self): - ndict = post_get_test_node( - chassis_uuid='1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e') - response = self.post_json('/nodes', ndict, expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_int) - self.assertTrue(response.json['error_message']) - - def test_create_node_with_internal_field(self): - ndict = post_get_test_node() - ndict['reservation'] = 'fake' - response = self.post_json('/nodes', ndict, expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_int) - self.assertTrue(response.json['error_message']) - - -class TestDelete(base.FunctionalTest): - - def setUp(self): - super(TestDelete, self).setUp() - cdict = dbutils.get_test_chassis() - self.chassis = self.dbapi.create_chassis(cdict) - p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') - self.mock_gtf = p.start() - self.mock_gtf.return_value = 'test-topic' - self.addCleanup(p.stop) - - @mock.patch.object(rpcapi.ConductorAPI, 'destroy_node') - def test_delete_node(self, mock_dn): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - self.delete('/nodes/%s' % ndict['uuid']) - mock_dn.assert_called_once_with(mock.ANY, ndict['uuid'], 'test-topic') - - @mock.patch.object(objects.Node, 'get_by_uuid') - def test_delete_node_not_found(self, mock_gbu): - ndict = dbutils.get_test_node() - mock_gbu.side_effect = exception.NodeNotFound(node=ndict['uuid']) - - response = self.delete('/nodes/%s' % ndict['uuid'], expect_errors=True) - self.assertEqual(404, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - mock_gbu.assert_called_once_with(mock.ANY, ndict['uuid']) - - def test_delete_ports_subresource(self): - ndict = dbutils.get_test_node() - self.dbapi.create_node(ndict) - response = self.delete('/nodes/%s/ports' % ndict['uuid'], - expect_errors=True) - self.assertEqual(403, response.status_int) - - @mock.patch.object(rpcapi.ConductorAPI, 'destroy_node') - def test_delete_associated(self, mock_dn): - ndict = dbutils.get_test_node( - instance_uuid='aaaaaaaa-1111-bbbb-2222-cccccccccccc') - node = self.dbapi.create_node(ndict) - mock_dn.side_effect = exception.NodeAssociated(node=node.uuid, - instance=node.instance_uuid) - - response = self.delete('/nodes/%s' % ndict['uuid'], expect_errors=True) - self.assertEqual(409, response.status_int) - mock_dn.assert_called_once_with(mock.ANY, node.uuid, 'test-topic') - - -class TestPut(base.FunctionalTest): - - def setUp(self): - super(TestPut, self).setUp() - cdict = dbutils.get_test_chassis() - self.chassis = self.dbapi.create_chassis(cdict) - ndict = dbutils.get_test_node() - self.node = self.dbapi.create_node(ndict) - p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') - self.mock_gtf = p.start() - self.mock_gtf.return_value = 'test-topic' - self.addCleanup(p.stop) - p = mock.patch.object(rpcapi.ConductorAPI, 'change_node_power_state') - self.mock_cnps = p.start() - self.addCleanup(p.stop) - p = mock.patch.object(rpcapi.ConductorAPI, 'do_node_deploy') - self.mock_dnd = p.start() - self.addCleanup(p.stop) - p = mock.patch.object(rpcapi.ConductorAPI, 'do_node_tear_down') - self.mock_dntd = p.start() - self.addCleanup(p.stop) - - def test_power_state(self): - response = self.put_json('/nodes/%s/states/power' % self.node['uuid'], - {'target': states.POWER_ON}) - self.assertEqual(202, response.status_code) - self.assertEqual('', response.body) - self.mock_cnps.assert_called_once_with(mock.ANY, - self.node['uuid'], - states.POWER_ON, - 'test-topic') - - def test_power_invalid_state_request(self): - ret = self.put_json('/nodes/%s/states/power' % self.node.uuid, - {'target': 'not-supported'}, expect_errors=True) - self.assertEqual(400, ret.status_code) - - def test_provision_with_deploy(self): - ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, - {'target': states.ACTIVE}) - self.assertEqual(202, ret.status_code) - self.assertEqual('', ret.body) - self.mock_dnd.assert_called_once_with( - mock.ANY, self.node.uuid, 'test-topic') - - def test_provision_with_tear_down(self): - ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, - {'target': states.DELETED}) - self.assertEqual(202, ret.status_code) - self.assertEqual('', ret.body) - self.mock_dntd.assert_called_once_with( - mock.ANY, self.node.uuid, 'test-topic') - - def test_provision_invalid_state_request(self): - ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, - {'target': 'not-supported'}, expect_errors=True) - self.assertEqual(400, ret.status_code) - - def test_provision_already_in_progress(self): - ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), - target_provision_state=states.ACTIVE) - node = self.dbapi.create_node(ndict) - ret = self.put_json('/nodes/%s/states/provision' % node.uuid, - {'target': states.ACTIVE}, - expect_errors=True) - self.assertEqual(409, ret.status_code) # Conflict - - def test_provision_already_in_state(self): - ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), - target_provision_state=states.NOSTATE, - provision_state=states.ACTIVE) - node = self.dbapi.create_node(ndict) - ret = self.put_json('/nodes/%s/states/provision' % node.uuid, - {'target': states.ACTIVE}, - expect_errors=True) - self.assertEqual(400, ret.status_code) - - def test_set_console_mode_enabled(self): - with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ - as mock_scm: - ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, - {'enabled': "true"}) - self.assertEqual(202, ret.status_code) - self.assertEqual('', ret.body) - mock_scm.assert_called_once_with(mock.ANY, self.node.uuid, - True, 'test-topic') - - def test_set_console_mode_disabled(self): - with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ - as mock_scm: - ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, - {'enabled': "false"}) - self.assertEqual(202, ret.status_code) - self.assertEqual('', ret.body) - mock_scm.assert_called_once_with(mock.ANY, self.node.uuid, - False, 'test-topic') - - def test_set_console_mode_bad_request(self): - with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ - as mock_scm: - ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, - {'enabled': "invalid-value"}, - expect_errors=True) - self.assertEqual(400, ret.status_code) - # assert set_console_mode wasn't called - assert not mock_scm.called - - def test_set_console_mode_bad_request_missing_parameter(self): - with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ - as mock_scm: - ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, - {}, expect_errors=True) - self.assertEqual(400, ret.status_code) - # assert set_console_mode wasn't called - assert not mock_scm.called - - def test_set_console_mode_console_not_supported(self): - with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ - as mock_scm: - mock_scm.side_effect = exception.UnsupportedDriverExtension( - extension='console', driver='test-driver') - ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, - {'enabled': "true"}, expect_errors=True) - self.assertEqual(400, ret.status_code) - mock_scm.assert_called_once_with(mock.ANY, self.node.uuid, - True, 'test-topic') - - def test_provision_node_in_maintenance_fail(self): - with mock.patch.object(rpcapi.ConductorAPI, 'do_node_deploy') as dnd: - ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), - maintenance=True) - node = self.dbapi.create_node(ndict) - dnd.side_effect = exception.NodeInMaintenance(op='provisioning', - node=node.uuid) - - ret = self.put_json('/nodes/%s/states/provision' % node.uuid, - {'target': states.ACTIVE}, - expect_errors=True) - self.assertEqual(400, ret.status_code) - self.assertTrue(ret.json['error_message']) diff -Nru ironic-2014.1~b3/ironic/tests/api/test_ports.py ironic-2014.1~rc1/ironic/tests/api/test_ports.py --- ironic-2014.1~b3/ironic/tests/api/test_ports.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_ports.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,477 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# 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 API /ports/ methods. -""" - -import datetime - -import mock -from oslo.config import cfg - -from ironic.common import utils -from ironic.openstack.common import timeutils -from ironic.tests.api import base -from ironic.tests.api import utils as apiutils -from ironic.tests.db import utils as dbutils - - -# NOTE(lucasagomes): When creating a port via API (POST) -# we have to use node_uuid -def post_get_test_port(**kw): - port = apiutils.port_post_data(**kw) - node = dbutils.get_test_node() - del port['node_id'] - port['node_uuid'] = kw.get('node_uuid', node['uuid']) - return port - - -class TestListPorts(base.FunctionalTest): - - def setUp(self): - super(TestListPorts, self).setUp() - ndict = dbutils.get_test_node() - self.node = self.dbapi.create_node(ndict) - - def test_empty(self): - data = self.get_json('/ports') - self.assertEqual([], data['ports']) - - def test_one(self): - ndict = dbutils.get_test_port() - port = self.dbapi.create_port(ndict) - data = self.get_json('/ports') - self.assertEqual(port['uuid'], data['ports'][0]["uuid"]) - self.assertNotIn('extra', data['ports'][0]) - self.assertNotIn('node_uuid', data['ports'][0]) - # never expose the node_id - self.assertNotIn('node_id', data['ports'][0]) - - def test_detail(self): - pdict = dbutils.get_test_port() - port = self.dbapi.create_port(pdict) - data = self.get_json('/ports/detail') - self.assertEqual(port['uuid'], data['ports'][0]["uuid"]) - self.assertIn('extra', data['ports'][0]) - self.assertIn('node_uuid', data['ports'][0]) - # never expose the node_id - self.assertNotIn('node_id', data['ports'][0]) - - def test_detail_against_single(self): - pdict = dbutils.get_test_port() - port = self.dbapi.create_port(pdict) - response = self.get_json('/ports/%s/detail' % port['uuid'], - expect_errors=True) - self.assertEqual(404, response.status_int) - - def test_many(self): - ports = [] - for id in range(5): - ndict = dbutils.get_test_port(id=id, - uuid=utils.generate_uuid(), - address='52:54:00:cf:2d:3%s' % id) - port = self.dbapi.create_port(ndict) - ports.append(port['uuid']) - data = self.get_json('/ports') - self.assertEqual(len(ports), len(data['ports'])) - - uuids = [n['uuid'] for n in data['ports']] - self.assertEqual(ports.sort(), uuids.sort()) - - def test_links(self): - uuid = utils.generate_uuid() - ndict = dbutils.get_test_port(id=1, uuid=uuid) - self.dbapi.create_port(ndict) - data = self.get_json('/ports/%s' % uuid) - self.assertIn('links', data.keys()) - self.assertEqual(2, len(data['links'])) - self.assertIn(uuid, data['links'][0]['href']) - self.assertTrue(self.validate_link(data['links'][0]['href'])) - self.assertTrue(self.validate_link(data['links'][1]['href'])) - - def test_collection_links(self): - ports = [] - for id in range(5): - ndict = dbutils.get_test_port(id=id, - uuid=utils.generate_uuid(), - address='52:54:00:cf:2d:3%s' % id) - port = self.dbapi.create_port(ndict) - ports.append(port['uuid']) - data = self.get_json('/ports/?limit=3') - self.assertEqual(3, len(data['ports'])) - - next_marker = data['ports'][-1]['uuid'] - self.assertIn(next_marker, data['next']) - - def test_collection_links_default_limit(self): - cfg.CONF.set_override('max_limit', 3, 'api') - ports = [] - for id in range(5): - ndict = dbutils.get_test_port(id=id, - uuid=utils.generate_uuid(), - address='52:54:00:cf:2d:3%s' % id) - port = self.dbapi.create_port(ndict) - ports.append(port['uuid']) - data = self.get_json('/ports') - self.assertEqual(3, len(data['ports'])) - - next_marker = data['ports'][-1]['uuid'] - self.assertIn(next_marker, data['next']) - - -class TestPatch(base.FunctionalTest): - - def setUp(self): - super(TestPatch, self).setUp() - ndict = dbutils.get_test_node() - self.node = self.dbapi.create_node(ndict) - self.pdict = dbutils.get_test_port(id=None) - self.dbapi.create_port(self.pdict) - - @mock.patch.object(timeutils, 'utcnow') - def test_update_byid(self, mock_utcnow): - extra = {'foo': 'bar'} - test_time = datetime.datetime(2000, 1, 1, 0, 0) - mock_utcnow.return_value = test_time - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/extra/foo', - 'value': 'bar', - 'op': 'add'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % self.pdict['uuid']) - self.assertEqual(extra, result['extra']) - return_updated_at = timeutils.parse_isotime( - result['updated_at']).replace(tzinfo=None) - self.assertEqual(test_time, return_updated_at) - - def test_update_byaddress(self): - response = self.patch_json('/ports/%s' % self.pdict['address'], - [{'path': '/extra/foo', 'value': 'bar', - 'op': 'add'}], expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertIn(self.pdict['address'], response.json['error_message']) - - def test_update_not_found(self): - uuid = utils.generate_uuid() - response = self.patch_json('/ports/%s' % uuid, - [{'path': '/extra/a', - 'value': 'b', - 'op': 'add'}], - expect_errors=True) - self.assertEqual(404, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_replace_singular(self): - address = 'aa:bb:cc:dd:ee:ff' - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/address', - 'value': address, 'op': 'replace'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % self.pdict['uuid']) - self.assertEqual(address, result['address']) - - def test_replace_address_already_exist(self): - pdict1 = dbutils.get_test_port(address='aa:aa:aa:aa:aa:aa', - uuid=utils.generate_uuid(), - id=None) - self.dbapi.create_port(pdict1) - - pdict2 = dbutils.get_test_port(address='bb:bb:bb:bb:bb:bb', - uuid=utils.generate_uuid(), - id=None) - self.dbapi.create_port(pdict2) - - response = self.patch_json('/ports/%s' % pdict1['uuid'], - [{'path': '/address', - 'value': pdict2['address'], - 'op': 'replace'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(409, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_replace_nodeid_dont_exist(self): - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/node_uuid', - 'value': '12506333-a81c-4d59-9987-889ed5f8687b', - 'op': 'replace'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_replace_multi(self): - extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} - pdict = dbutils.get_test_port(extra=extra, - address="AA:BB:CC:DD:EE:FF", - uuid=utils.generate_uuid()) - self.dbapi.create_port(pdict) - - new_value = 'new value' - response = self.patch_json('/ports/%s' % pdict['uuid'], - [{'path': '/extra/foo2', - 'value': new_value, 'op': 'replace'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % pdict['uuid']) - - extra["foo2"] = new_value - self.assertEqual(extra, result['extra']) - - def test_remove_multi(self): - extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} - pdict = dbutils.get_test_port(extra=extra, - address="aa:bb:cc:dd:ee:ff", - uuid=utils.generate_uuid()) - self.dbapi.create_port(pdict) - - # Removing one item from the collection - response = self.patch_json('/ports/%s' % pdict['uuid'], - [{'path': '/extra/foo2', 'op': 'remove'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % pdict['uuid']) - extra.pop("foo2") - self.assertEqual(extra, result['extra']) - - # Removing the collection - response = self.patch_json('/ports/%s' % pdict['uuid'], - [{'path': '/extra', 'op': 'remove'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % pdict['uuid']) - self.assertEqual({}, result['extra']) - - # Assert nothing else was changed - self.assertEqual(pdict['uuid'], result['uuid']) - self.assertEqual(pdict['address'], result['address']) - - def test_remove_non_existent_property_fail(self): - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/extra/non-existent', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type, ) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_remove_mandatory_field(self): - pdict = dbutils.get_test_port(address="AA:BB:CC:DD:EE:FF", - uuid=utils.generate_uuid()) - self.dbapi.create_port(pdict) - - response = self.patch_json('/ports/%s' % pdict['uuid'], - [{'path': '/address', 'op': 'remove'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_code) - self.assertTrue(response.json['error_message']) - - def test_add_singular(self): - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/foo', 'value': 'bar', - 'op': 'add'}], - expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_int) - self.assertTrue(response.json['error_message']) - - def test_add_multi(self): - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/extra/foo1', 'value': 'bar1', - 'op': 'add'}, - {'path': '/extra/foo2', 'value': 'bar2', - 'op': 'add'}]) - self.assertEqual('application/json', response.content_type) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % self.pdict['uuid']) - expected = {"foo1": "bar1", "foo2": "bar2"} - self.assertEqual(expected, result['extra']) - - def test_remove_uuid(self): - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/uuid', 'op': 'remove'}], - expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_update_address_invalid_format(self): - pdict = dbutils.get_test_port(address="AA:BB:CC:DD:EE:FF", - uuid=utils.generate_uuid()) - self.dbapi.create_port(pdict) - response = self.patch_json('/ports/%s' % pdict['uuid'], - [{'path': '/address', - 'value': 'invalid-format', - 'op': 'replace'}], - expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_update_port_address_normalized(self): - new_address = 'AA:BB:CC:DD:EE:FF' - response = self.patch_json('/ports/%s' % self.pdict['uuid'], - [{'path': '/address', 'value': new_address, - 'op': 'replace'}]) - self.assertEqual(200, response.status_code) - result = self.get_json('/ports/%s' % self.pdict['uuid']) - self.assertEqual(new_address.lower(), result['address']) - - -class TestPost(base.FunctionalTest): - - def setUp(self): - super(TestPost, self).setUp() - ndict = dbutils.get_test_node() - self.node = self.dbapi.create_node(ndict) - - @mock.patch.object(timeutils, 'utcnow') - def test_create_port(self, mock_utcnow): - pdict = post_get_test_port() - test_time = datetime.datetime(2000, 1, 1, 0, 0) - mock_utcnow.return_value = test_time - response = self.post_json('/ports', pdict) - self.assertEqual(201, response.status_int) - result = self.get_json('/ports/%s' % pdict['uuid']) - self.assertEqual(pdict['uuid'], result['uuid']) - self.assertFalse(result['updated_at']) - return_created_at = timeutils.parse_isotime( - result['created_at']).replace(tzinfo=None) - self.assertEqual(test_time, return_created_at) - - def test_create_port_generate_uuid(self): - pdict = post_get_test_port() - del pdict['uuid'] - response = self.post_json('/ports', pdict) - result = self.get_json('/ports/%s' % response.json['uuid']) - self.assertEqual(pdict['address'], result['address']) - self.assertTrue(utils.is_uuid_like(result['uuid'])) - - def test_create_port_valid_extra(self): - pdict = post_get_test_port(extra={'foo': 123}) - self.post_json('/ports', pdict) - result = self.get_json('/ports/%s' % pdict['uuid']) - self.assertEqual(pdict['extra'], result['extra']) - - def test_create_port_invalid_extra(self): - pdict = post_get_test_port(extra={'foo': 0.123}) - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_port_no_mandatory_field_address(self): - pdict = post_get_test_port() - del pdict['address'] - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_port_no_mandatory_field_node_uuid(self): - pdict = post_get_test_port() - del pdict['node_uuid'] - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_port_invalid_addr_format(self): - pdict = post_get_test_port(address='invalid-format') - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_port_address_normalized(self): - address = 'AA:BB:CC:DD:EE:FF' - pdict = post_get_test_port(address=address) - self.post_json('/ports', pdict) - result = self.get_json('/ports/%s' % pdict['uuid']) - self.assertEqual(address.lower(), result['address']) - - def test_create_port_with_hyphens_delimiter(self): - pdict = post_get_test_port() - colonsMAC = pdict['address'] - hyphensMAC = colonsMAC.replace(':', '-') - pdict['address'] = hyphensMAC - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_create_port_invalid_node_uuid_format(self): - pdict = post_get_test_port(node_uuid='invalid-format') - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_int) - self.assertTrue(response.json['error_message']) - - def test_node_uuid_to_node_id_mapping(self): - pdict = post_get_test_port(node_uuid=self.node['uuid']) - self.post_json('/ports', pdict) - # GET doesn't return the node_id it's an internal value - port = self.dbapi.get_port(pdict['uuid']) - self.assertEqual(self.node['id'], port.node_id) - - def test_create_port_node_uuid_not_found(self): - pdict = post_get_test_port( - node_uuid='1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e') - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual('application/json', response.content_type) - self.assertEqual(400, response.status_int) - self.assertTrue(response.json['error_message']) - - def test_create_port_address_already_exist(self): - address = 'AA:AA:AA:11:22:33' - pdict = post_get_test_port(address=address) - self.post_json('/ports', pdict) - pdict['uuid'] = utils.generate_uuid() - response = self.post_json('/ports', pdict, expect_errors=True) - self.assertEqual(409, response.status_int) - self.assertEqual('application/json', response.content_type) - error_msg = response.json['error_message'] - self.assertTrue(error_msg) - self.assertIn(address, error_msg.upper()) - - -class TestDelete(base.FunctionalTest): - - def setUp(self): - super(TestDelete, self).setUp() - ndict = dbutils.get_test_node() - self.node = self.dbapi.create_node(ndict) - pdict = dbutils.get_test_port() - self.dbapi.create_port(pdict) - - def test_delete_port_byid(self): - pdict = dbutils.get_test_port() - self.delete('/ports/%s' % pdict['uuid']) - response = self.get_json('/ports/%s' % pdict['uuid'], - expect_errors=True) - self.assertEqual(404, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertTrue(response.json['error_message']) - - def test_delete_port_byaddress(self): - pdict = dbutils.get_test_port() - response = self.delete('/ports/%s' % pdict['address'], - expect_errors=True) - self.assertEqual(400, response.status_int) - self.assertEqual('application/json', response.content_type) - self.assertIn(pdict['address'], response.json['error_message']) diff -Nru ironic-2014.1~b3/ironic/tests/api/test_types.py ironic-2014.1~rc1/ironic/tests/api/test_types.py --- ironic-2014.1~b3/ironic/tests/api/test_types.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_types.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,204 +0,0 @@ -# coding: utf-8 -# -# 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 mock -import six -import webtest -import wsme - -from ironic.api.controllers.v1 import types -from ironic.common import exception -from ironic.common import utils -from ironic.tests.api import base - - -class TestMacAddressType(base.FunctionalTest): - - def test_valid_mac_addr(self): - test_mac = 'aa:bb:cc:11:22:33' - with mock.patch.object(utils, 'validate_and_normalize_mac') as m_mock: - types.MacAddressType.validate(test_mac) - m_mock.assert_called_once_with(test_mac) - - def test_invalid_mac_addr(self): - self.assertRaises(exception.InvalidMAC, - types.MacAddressType.validate, 'invalid-mac') - - -class TestUuidType(base.FunctionalTest): - - def test_valid_uuid(self): - test_uuid = '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' - with mock.patch.object(utils, 'is_uuid_like') as uuid_mock: - types.UuidType.validate(test_uuid) - uuid_mock.assert_called_once_with(test_uuid) - - def test_invalid_uuid(self): - self.assertRaises(exception.InvalidUUID, - types.UuidType.validate, 'invalid-uuid') - - -class MyPatchType(types.JsonPatchType): - """Helper class for TestJsonPatchType tests.""" - - @staticmethod - def mandatory_attrs(): - return ['/mandatory'] - - @staticmethod - def internal_attrs(): - return ['/internal'] - - -class MyRoot(wsme.WSRoot): - """Helper class for TestJsonPatchType tests.""" - - @wsme.expose([wsme.types.text], body=[MyPatchType]) - @wsme.validate([MyPatchType]) - def test(self, patch): - return patch - - -class TestJsonPatchType(base.FunctionalTest): - - def setUp(self): - super(TestJsonPatchType, self).setUp() - self.app = webtest.TestApp(MyRoot(['restjson']).wsgiapp()) - - def _patch_json(self, params, expect_errors=False): - return self.app.patch_json('/test', params=params, - headers={'Accept': 'application/json'}, - expect_errors=expect_errors) - - def test_valid_patches(self): - valid_patches = [{'path': '/extra/foo', 'op': 'remove'}, - {'path': '/extra/foo', 'op': 'add', 'value': 'bar'}, - {'path': '/foo', 'op': 'replace', 'value': 'bar'}] - ret = self._patch_json(valid_patches, False) - self.assertEqual(200, ret.status_int) - self.assertEqual(sorted(valid_patches), sorted(ret.json)) - - def test_cannot_update_internal_attr(self): - patch = [{'path': '/internal', 'op': 'replace', 'value': 'foo'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_mandatory_attr(self): - patch = [{'op': 'replace', 'path': '/mandatory', 'value': 'foo'}] - ret = self._patch_json(patch, False) - self.assertEqual(200, ret.status_int) - self.assertEqual(patch, ret.json) - - def test_cannot_remove_mandatory_attr(self): - patch = [{'op': 'remove', 'path': '/mandatory'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_missing_required_fields_path(self): - missing_path = [{'op': 'remove'}] - ret = self._patch_json(missing_path, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_missing_required_fields_op(self): - missing_op = [{'path': '/foo'}] - ret = self._patch_json(missing_op, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_invalid_op(self): - patch = [{'path': '/foo', 'op': 'invalid'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_invalid_path(self): - patch = [{'path': 'invalid-path', 'op': 'remove'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_cannot_add_to_root(self): - patch = [{'path': '/foo', 'op': 'add', 'value': 'bar'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_cannot_add_with_no_value(self): - patch = [{'path': '/extra/foo', 'op': 'add'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - def test_cannot_replace_with_no_value(self): - patch = [{'path': '/foo', 'op': 'replace'}] - ret = self._patch_json(patch, True) - self.assertEqual(400, ret.status_int) - self.assertTrue(ret.json['faultstring']) - - -class TestMultiType(base.FunctionalTest): - - def test_valid_values(self): - vt = types.MultiType(wsme.types.text, six.integer_types) - value = vt.validate("hello") - self.assertEqual("hello", value) - value = vt.validate(10) - self.assertEqual(10, value) - - def test_invalid_values(self): - vt = types.MultiType(wsme.types.text, six.integer_types) - self.assertRaises(ValueError, vt.validate, 0.10) - self.assertRaises(ValueError, vt.validate, object()) - - def test_multitype_tostring(self): - vt = types.MultiType(str, int) - vts = str(vt) - self.assertIn(str(str), vts) - self.assertIn(str(int), vts) - - -class TestBooleanType(base.FunctionalTest): - - def test_valid_true_values(self): - v = types.BooleanType() - self.assertTrue(v.validate("true")) - self.assertTrue(v.validate("TRUE")) - self.assertTrue(v.validate("True")) - self.assertTrue(v.validate("t")) - self.assertTrue(v.validate("1")) - self.assertTrue(v.validate("y")) - self.assertTrue(v.validate("yes")) - self.assertTrue(v.validate("on")) - - def test_valid_false_values(self): - v = types.BooleanType() - self.assertFalse(v.validate("false")) - self.assertFalse(v.validate("FALSE")) - self.assertFalse(v.validate("False")) - self.assertFalse(v.validate("f")) - self.assertFalse(v.validate("0")) - self.assertFalse(v.validate("n")) - self.assertFalse(v.validate("no")) - self.assertFalse(v.validate("off")) - - def test_invalid_value(self): - v = types.BooleanType() - self.assertRaises(exception.Invalid, v.validate, "invalid-value") - self.assertRaises(exception.Invalid, v.validate, "01") diff -Nru ironic-2014.1~b3/ironic/tests/api/test_utils.py ironic-2014.1~rc1/ironic/tests/api/test_utils.py --- ironic-2014.1~b3/ironic/tests/api/test_utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/test_utils.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -# 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 wsme - -from ironic.api.controllers.v1 import utils -from ironic.tests.api import base - -from oslo.config import cfg - -CONF = cfg.CONF - - -class TestApiUtils(base.FunctionalTest): - - def test_validate_limit(self): - limit = utils.validate_limit(10) - self.assertEqual(10, 10) - - # max limit - limit = utils.validate_limit(999999999) - self.assertEqual(CONF.api.max_limit, limit) - - # negative - self.assertRaises(wsme.exc.ClientSideError, utils.validate_limit, -1) - - def test_validate_sort_dir(self): - sort_dir = utils.validate_sort_dir('asc') - self.assertEqual('asc', sort_dir) - - # invalid sort_dir parameter - self.assertRaises(wsme.exc.ClientSideError, - utils.validate_sort_dir, - 'fake-sort') diff -Nru ironic-2014.1~b3/ironic/tests/api/v1/test_chassis.py ironic-2014.1~rc1/ironic/tests/api/v1/test_chassis.py --- ironic-2014.1~b3/ironic/tests/api/v1/test_chassis.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/v1/test_chassis.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,381 @@ +# -*- encoding: utf-8 -*- +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# 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 API /chassis/ methods. +""" + +import datetime + +import mock +from oslo.config import cfg + +from ironic.common import utils +from ironic.openstack.common import timeutils +from ironic.tests.api import base +from ironic.tests.api import utils as apiutils +from ironic.tests.db import utils as dbutils + + +class TestListChassis(base.FunctionalTest): + + def test_empty(self): + data = self.get_json('/chassis') + self.assertEqual([], data['chassis']) + + def test_one(self): + ndict = dbutils.get_test_chassis() + chassis = self.dbapi.create_chassis(ndict) + data = self.get_json('/chassis') + self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"]) + self.assertNotIn('extra', data['chassis'][0]) + self.assertNotIn('nodes', data['chassis'][0]) + + def test_detail(self): + cdict = dbutils.get_test_chassis() + chassis = self.dbapi.create_chassis(cdict) + data = self.get_json('/chassis/detail') + self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"]) + self.assertIn('extra', data['chassis'][0]) + self.assertIn('nodes', data['chassis'][0]) + + def test_detail_against_single(self): + cdict = dbutils.get_test_chassis() + chassis = self.dbapi.create_chassis(cdict) + response = self.get_json('/chassis/%s/detail' % chassis['uuid'], + expect_errors=True) + self.assertEqual(404, response.status_int) + + def test_many(self): + ch_list = [] + for id in range(5): + ndict = dbutils.get_test_chassis(id=id, + uuid=utils.generate_uuid()) + chassis = self.dbapi.create_chassis(ndict) + ch_list.append(chassis['uuid']) + data = self.get_json('/chassis') + self.assertEqual(len(ch_list), len(data['chassis'])) + uuids = [n['uuid'] for n in data['chassis']] + self.assertEqual(ch_list.sort(), uuids.sort()) + + def test_links(self): + uuid = utils.generate_uuid() + ndict = dbutils.get_test_chassis(id=1, uuid=uuid) + self.dbapi.create_chassis(ndict) + data = self.get_json('/chassis/%s' % uuid) + self.assertIn('links', data.keys()) + self.assertEqual(2, len(data['links'])) + self.assertIn(uuid, data['links'][0]['href']) + self.assertTrue(self.validate_link(data['links'][0]['href'])) + self.assertTrue(self.validate_link(data['links'][1]['href'])) + + def test_collection_links(self): + chassis = [] + for id in range(5): + ndict = dbutils.get_test_chassis(id=id, + uuid=utils.generate_uuid()) + ch = self.dbapi.create_chassis(ndict) + chassis.append(ch['uuid']) + data = self.get_json('/chassis/?limit=3') + self.assertEqual(3, len(data['chassis'])) + + next_marker = data['chassis'][-1]['uuid'] + self.assertIn(next_marker, data['next']) + + def test_collection_links_default_limit(self): + cfg.CONF.set_override('max_limit', 3, 'api') + chassis = [] + for id in range(5): + ndict = dbutils.get_test_chassis(id=id, + uuid=utils.generate_uuid()) + ch = self.dbapi.create_chassis(ndict) + chassis.append(ch['uuid']) + data = self.get_json('/chassis') + self.assertEqual(3, len(data['chassis'])) + + next_marker = data['chassis'][-1]['uuid'] + self.assertIn(next_marker, data['next']) + + def test_nodes_subresource_link(self): + ndict = dbutils.get_test_chassis() + self.dbapi.create_chassis(ndict) + + data = self.get_json('/chassis/%s' % ndict['uuid']) + self.assertIn('nodes', data.keys()) + + def test_nodes_subresource(self): + cdict = dbutils.get_test_chassis() + self.dbapi.create_chassis(cdict) + + for id in range(2): + ndict = dbutils.get_test_node(id=id, chassis_id=cdict['id'], + uuid=utils.generate_uuid()) + self.dbapi.create_node(ndict) + + data = self.get_json('/chassis/%s/nodes' % cdict['uuid']) + self.assertEqual(2, len(data['nodes'])) + self.assertNotIn('next', data.keys()) + + # Test collection pagination + data = self.get_json('/chassis/%s/nodes?limit=1' % cdict['uuid']) + self.assertEqual(1, len(data['nodes'])) + self.assertIn('next', data.keys()) + + def test_nodes_subresource_no_uuid(self): + response = self.get_json('/chassis/nodes', expect_errors=True) + self.assertEqual(400, response.status_int) + + def test_nodes_subresource_chassis_not_found(self): + non_existent_uuid = 'eeeeeeee-cccc-aaaa-bbbb-cccccccccccc' + response = self.get_json('/chassis/%s/nodes' % non_existent_uuid, + expect_errors=True) + self.assertEqual(404, response.status_int) + + +class TestPatch(base.FunctionalTest): + + def setUp(self): + super(TestPatch, self).setUp() + cdict = dbutils.get_test_chassis() + self.dbapi.create_chassis(cdict) + + def test_update_not_found(self): + uuid = utils.generate_uuid() + response = self.patch_json('/chassis/%s' % uuid, + [{'path': '/extra/a', 'value': 'b', + 'op': 'add'}], + expect_errors=True) + self.assertEqual(404, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + @mock.patch.object(timeutils, 'utcnow') + def test_replace_singular(self, mock_utcnow): + cdict = dbutils.get_test_chassis() + description = 'chassis-new-description' + test_time = datetime.datetime(2000, 1, 1, 0, 0) + + mock_utcnow.return_value = test_time + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/description', + 'value': description, 'op': 'replace'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/chassis/%s' % cdict['uuid']) + self.assertEqual(description, result['description']) + return_updated_at = timeutils.parse_isotime( + result['updated_at']).replace(tzinfo=None) + self.assertEqual(test_time, return_updated_at) + + def test_replace_multi(self): + extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} + cdict = dbutils.get_test_chassis(extra=extra, + uuid=utils.generate_uuid(), + id=None) + self.dbapi.create_chassis(cdict) + new_value = 'new value' + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/extra/foo2', + 'value': new_value, 'op': 'replace'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/chassis/%s' % cdict['uuid']) + + extra["foo2"] = new_value + self.assertEqual(extra, result['extra']) + + def test_remove_singular(self): + cdict = dbutils.get_test_chassis(extra={'a': 'b'}, + uuid=utils.generate_uuid(), + id=None) + self.dbapi.create_chassis(cdict) + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/description', 'op': 'remove'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/chassis/%s' % cdict['uuid']) + self.assertIsNone(result['description']) + + # Assert nothing else was changed + self.assertEqual(cdict['uuid'], result['uuid']) + self.assertEqual(cdict['extra'], result['extra']) + + def test_remove_multi(self): + extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} + cdict = dbutils.get_test_chassis(extra=extra, description="foobar", + uuid=utils.generate_uuid(), + id=None) + self.dbapi.create_chassis(cdict) + + # Removing one item from the collection + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/extra/foo2', 'op': 'remove'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/chassis/%s' % cdict['uuid']) + extra.pop("foo2") + self.assertEqual(extra, result['extra']) + + # Removing the collection + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/extra', 'op': 'remove'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/chassis/%s' % cdict['uuid']) + self.assertEqual({}, result['extra']) + + # Assert nothing else was changed + self.assertEqual(cdict['uuid'], result['uuid']) + self.assertEqual(cdict['description'], result['description']) + + def test_remove_non_existent_property_fail(self): + cdict = dbutils.get_test_chassis() + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/extra/non-existent', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_add_singular(self): + cdict = dbutils.get_test_chassis() + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/foo', 'value': 'bar', + 'op': 'add'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_int) + self.assertTrue(response.json['error_message']) + + def test_add_multi(self): + cdict = dbutils.get_test_chassis() + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/extra/foo1', 'value': 'bar1', + 'op': 'add'}, + {'path': '/extra/foo2', 'value': 'bar2', + 'op': 'add'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/chassis/%s' % cdict['uuid']) + expected = {"foo1": "bar1", "foo2": "bar2"} + self.assertEqual(expected, result['extra']) + + def test_patch_nodes_subresource(self): + cdict = dbutils.get_test_chassis() + response = self.patch_json('/chassis/%s/nodes' % cdict['uuid'], + [{'path': '/extra/foo', 'value': 'bar', + 'op': 'add'}], expect_errors=True) + self.assertEqual(403, response.status_int) + + def test_remove_uuid(self): + cdict = dbutils.get_test_chassis() + response = self.patch_json('/chassis/%s' % cdict['uuid'], + [{'path': '/uuid', 'op': 'remove'}], + expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + +class TestPost(base.FunctionalTest): + + @mock.patch.object(timeutils, 'utcnow') + def test_create_chassis(self, mock_utcnow): + cdict = apiutils.chassis_post_data() + test_time = datetime.datetime(2000, 1, 1, 0, 0) + mock_utcnow.return_value = test_time + + response = self.post_json('/chassis', cdict) + self.assertEqual(201, response.status_int) + result = self.get_json('/chassis/%s' % cdict['uuid']) + self.assertEqual(cdict['uuid'], result['uuid']) + self.assertFalse(result['updated_at']) + return_created_at = timeutils.parse_isotime( + result['created_at']).replace(tzinfo=None) + self.assertEqual(test_time, return_created_at) + + def test_create_chassis_generate_uuid(self): + cdict = apiutils.chassis_post_data() + del cdict['uuid'] + self.post_json('/chassis', cdict) + result = self.get_json('/chassis') + self.assertEqual(cdict['description'], + result['chassis'][0]['description']) + self.assertTrue(utils.is_uuid_like(result['chassis'][0]['uuid'])) + + def test_post_nodes_subresource(self): + cdict = dbutils.get_test_chassis() + self.dbapi.create_chassis(cdict) + ndict = apiutils.node_post_data(chassis_id=None) + ndict['chassis_uuid'] = cdict['uuid'] + response = self.post_json('/chassis/nodes', ndict, + expect_errors=True) + self.assertEqual(403, response.status_int) + + def test_create_chassis_valid_extra(self): + cdict = apiutils.chassis_post_data(extra={'foo': 123}) + self.post_json('/chassis', cdict) + result = self.get_json('/chassis/%s' % cdict['uuid']) + self.assertEqual(cdict['extra'], result['extra']) + + def test_create_chassis_invalid_extra(self): + cdict = apiutils.chassis_post_data(extra={'foo': 0.123}) + response = self.post_json('/chassis', cdict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_chassis_unicode_description(self): + descr = u'\u0430\u043c\u043e' + cdict = apiutils.chassis_post_data(description=descr) + self.post_json('/chassis', cdict) + result = self.get_json('/chassis/%s' % cdict['uuid']) + self.assertEqual(descr, result['description']) + + +class TestDelete(base.FunctionalTest): + + def test_delete_chassis(self): + cdict = dbutils.get_test_chassis() + self.dbapi.create_chassis(cdict) + self.delete('/chassis/%s' % cdict['uuid']) + response = self.get_json('/chassis/%s' % cdict['uuid'], + expect_errors=True) + self.assertEqual(404, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_delete_chassis_with_node(self): + cdict = dbutils.get_test_chassis() + self.dbapi.create_chassis(cdict) + ndict = dbutils.get_test_node(chassis_id=cdict['id']) + self.dbapi.create_node(ndict) + response = self.delete('/chassis/%s' % cdict['uuid'], + expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_delete_chassis_not_found(self): + uuid = utils.generate_uuid() + response = self.delete('/chassis/%s' % uuid, expect_errors=True) + self.assertEqual(404, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_delete_nodes_subresource(self): + cdict = dbutils.get_test_chassis() + self.dbapi.create_chassis(cdict) + response = self.delete('/chassis/%s/nodes' % cdict['uuid'], + expect_errors=True) + self.assertEqual(403, response.status_int) diff -Nru ironic-2014.1~b3/ironic/tests/api/v1/test_drivers.py ironic-2014.1~rc1/ironic/tests/api/v1/test_drivers.py --- ironic-2014.1~b3/ironic/tests/api/v1/test_drivers.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/v1/test_drivers.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,68 @@ +# 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. + +from testtools.matchers import HasLength + +from ironic.tests.api import base + + +class TestListDrivers(base.FunctionalTest): + d1 = 'fake-driver1' + d2 = 'fake-driver2' + h1 = 'fake-host1' + h2 = 'fake-host2' + + def register_fake_conductors(self): + self.dbapi.register_conductor({ + 'hostname': self.h1, + 'drivers': [self.d1, self.d2], + }) + self.dbapi.register_conductor({ + 'hostname': self.h2, + 'drivers': [self.d2], + }) + + def test_drivers(self): + self.register_fake_conductors() + expected = sorted([ + {'name': self.d1, 'hosts': [self.h1]}, + {'name': self.d2, 'hosts': [self.h1, self.h2]}, + ]) + data = self.get_json('/drivers') + self.assertThat(data['drivers'], HasLength(2)) + drivers = sorted(data['drivers']) + for i in range(len(expected)): + driver = drivers[i] + self.assertEqual(expected[i]['name'], driver['name']) + self.assertEqual(expected[i]['hosts'], driver['hosts']) + self.validate_link(driver['links'][0]['href']) + self.validate_link(driver['links'][1]['href']) + + def test_drivers_no_active_conductor(self): + data = self.get_json('/drivers') + self.assertThat(data['drivers'], HasLength(0)) + self.assertEqual([], data['drivers']) + + def test_drivers_get_one_ok(self): + self.register_fake_conductors() + data = self.get_json('/drivers/%s' % self.d1) + self.assertEqual(self.d1, data['name']) + self.assertEqual([self.h1], data['hosts']) + self.validate_link(data['links'][0]['href']) + self.validate_link(data['links'][1]['href']) + + def test_drivers_get_one_not_found(self): + response = self.get_json('/drivers/' + self.d1, expect_errors=True) + self.assertEqual(404, response.status_int) diff -Nru ironic-2014.1~b3/ironic/tests/api/v1/test_nodes.py ironic-2014.1~rc1/ironic/tests/api/v1/test_nodes.py --- ironic-2014.1~b3/ironic/tests/api/v1/test_nodes.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/v1/test_nodes.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,964 @@ +# -*- encoding: utf-8 -*- +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# 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 API /nodes/ methods. +""" + +import datetime + +import mock +from oslo.config import cfg +from testtools.matchers import HasLength + +from ironic.common import exception +from ironic.common import states +from ironic.common import utils +from ironic.conductor import rpcapi +from ironic import objects +from ironic.openstack.common import timeutils +from ironic.tests.api import base +from ironic.tests.api import utils as apiutils +from ironic.tests.db import utils as dbutils + + +# NOTE(lucasagomes): When creating a node via API (POST) +# we have to use chassis_uuid +def post_get_test_node(**kw): + node = apiutils.node_post_data(**kw) + chassis = dbutils.get_test_chassis() + node['chassis_id'] = None + node['chassis_uuid'] = kw.get('chassis_uuid', chassis['uuid']) + return node + + +class TestListNodes(base.FunctionalTest): + + def setUp(self): + super(TestListNodes, self).setUp() + cdict = dbutils.get_test_chassis() + self.chassis = self.dbapi.create_chassis(cdict) + p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') + self.mock_gtf = p.start() + self.mock_gtf.return_value = 'test-topic' + self.addCleanup(p.stop) + + def _create_association_test_nodes(self): + #create some unassociated nodes + unassociated_nodes = [] + for id in range(3): + ndict = dbutils.get_test_node(id=id, + uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + unassociated_nodes.append(node['uuid']) + + #created some associated nodes + associated_nodes = [] + for id in range(3, 7): + ndict = dbutils.get_test_node( + id=id, + uuid=utils.generate_uuid(), + instance_uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + associated_nodes.append(node['uuid']) + return {'associated': associated_nodes, + 'unassociated': unassociated_nodes} + + def test_empty(self): + data = self.get_json('/nodes') + self.assertEqual([], data['nodes']) + + def test_one(self): + ndict = dbutils.get_test_node() + node = self.dbapi.create_node(ndict) + data = self.get_json('/nodes') + self.assertEqual(node['uuid'], data['nodes'][0]["uuid"]) + self.assertNotIn('driver', data['nodes'][0]) + self.assertNotIn('driver_info', data['nodes'][0]) + self.assertNotIn('extra', data['nodes'][0]) + self.assertNotIn('properties', data['nodes'][0]) + self.assertNotIn('chassis_uuid', data['nodes'][0]) + self.assertNotIn('reservation', data['nodes'][0]) + self.assertNotIn('maintenance', data['nodes'][0]) + self.assertNotIn('console_enabled', data['nodes'][0]) + self.assertNotIn('target_power_state', data['nodes'][0]) + self.assertNotIn('target_provision_state', data['nodes'][0]) + self.assertNotIn('provision_updated_at', data['nodes'][0]) + # never expose the chassis_id + self.assertNotIn('chassis_id', data['nodes'][0]) + + def test_detail(self): + ndict = dbutils.get_test_node() + node = self.dbapi.create_node(ndict) + data = self.get_json('/nodes/detail') + self.assertEqual(node['uuid'], data['nodes'][0]["uuid"]) + self.assertIn('driver', data['nodes'][0]) + self.assertIn('driver_info', data['nodes'][0]) + self.assertIn('extra', data['nodes'][0]) + self.assertIn('properties', data['nodes'][0]) + self.assertIn('chassis_uuid', data['nodes'][0]) + self.assertIn('reservation', data['nodes'][0]) + self.assertIn('maintenance', data['nodes'][0]) + self.assertIn('console_enabled', data['nodes'][0]) + self.assertIn('target_power_state', data['nodes'][0]) + self.assertIn('target_provision_state', data['nodes'][0]) + self.assertIn('provision_updated_at', data['nodes'][0]) + # never expose the chassis_id + self.assertNotIn('chassis_id', data['nodes'][0]) + + def test_detail_against_single(self): + ndict = dbutils.get_test_node() + node = self.dbapi.create_node(ndict) + response = self.get_json('/nodes/%s/detail' % node['uuid'], + expect_errors=True) + self.assertEqual(404, response.status_int) + + def test_many(self): + nodes = [] + for id in range(5): + ndict = dbutils.get_test_node(id=id, + uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + nodes.append(node['uuid']) + data = self.get_json('/nodes') + self.assertEqual(len(nodes), len(data['nodes'])) + + uuids = [n['uuid'] for n in data['nodes']] + self.assertEqual(sorted(nodes), sorted(uuids)) + + def test_links(self): + uuid = utils.generate_uuid() + ndict = dbutils.get_test_node(id=1, uuid=uuid) + self.dbapi.create_node(ndict) + data = self.get_json('/nodes/%s' % uuid) + self.assertIn('links', data.keys()) + self.assertEqual(2, len(data['links'])) + self.assertIn(uuid, data['links'][0]['href']) + self.assertTrue(self.validate_link(data['links'][0]['href'])) + self.assertTrue(self.validate_link(data['links'][1]['href'])) + + def test_collection_links(self): + nodes = [] + for id in range(5): + ndict = dbutils.get_test_node(id=id, + uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + nodes.append(node['uuid']) + data = self.get_json('/nodes/?limit=3') + self.assertEqual(3, len(data['nodes'])) + + next_marker = data['nodes'][-1]['uuid'] + self.assertIn(next_marker, data['next']) + + def test_collection_links_default_limit(self): + cfg.CONF.set_override('max_limit', 3, 'api') + nodes = [] + for id in range(5): + ndict = dbutils.get_test_node(id=id, + uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + nodes.append(node['uuid']) + data = self.get_json('/nodes') + self.assertEqual(3, len(data['nodes'])) + + next_marker = data['nodes'][-1]['uuid'] + self.assertIn(next_marker, data['next']) + + def test_ports_subresource_link(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + + data = self.get_json('/nodes/%s' % ndict['uuid']) + self.assertIn('ports', data.keys()) + + def test_ports_subresource(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + + for id in range(2): + pdict = dbutils.get_test_port(id=id, node_id=ndict['id'], + uuid=utils.generate_uuid(), + address='52:54:00:cf:2d:3%s' % id) + self.dbapi.create_port(pdict) + + data = self.get_json('/nodes/%s/ports' % ndict['uuid']) + self.assertEqual(2, len(data['ports'])) + self.assertNotIn('next', data.keys()) + + # Test collection pagination + data = self.get_json('/nodes/%s/ports?limit=1' % ndict['uuid']) + self.assertEqual(1, len(data['ports'])) + self.assertIn('next', data.keys()) + + def test_ports_subresource_noid(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + pdict = dbutils.get_test_port(node_id=ndict['id']) + self.dbapi.create_port(pdict) + # No node id specified + response = self.get_json('/nodes/ports', expect_errors=True) + self.assertEqual(400, response.status_int) + + def test_ports_subresource_node_not_found(self): + non_existent_uuid = 'eeeeeeee-cccc-aaaa-bbbb-cccccccccccc' + response = self.get_json('/nodes/%s/ports' % non_existent_uuid, + expect_errors=True) + self.assertEqual(404, response.status_int) + + @mock.patch.object(timeutils, 'utcnow') + def test_node_states(self, mock_utcnow): + fake_state = 'fake-state' + fake_error = 'fake-error' + test_time = datetime.datetime(2000, 1, 1, 0, 0) + mock_utcnow.return_value = test_time + ndict = dbutils.get_test_node(power_state=fake_state, + target_power_state=fake_state, + provision_state=fake_state, + target_provision_state=fake_state, + provision_updated_at=test_time, + last_error=fake_error) + self.dbapi.create_node(ndict) + data = self.get_json('/nodes/%s/states' % ndict['uuid']) + self.assertEqual(fake_state, data['power_state']) + self.assertEqual(fake_state, data['target_power_state']) + self.assertEqual(fake_state, data['provision_state']) + self.assertEqual(fake_state, data['target_provision_state']) + prov_up_at = timeutils.parse_isotime( + data['provision_updated_at']).replace(tzinfo=None) + self.assertEqual(test_time, prov_up_at) + self.assertEqual(fake_error, data['last_error']) + self.assertFalse(data['console_enabled']) + + def test_node_by_instance_uuid(self): + ndict = dbutils.get_test_node(uuid=utils.generate_uuid(), + instance_uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + instance_uuid = node['instance_uuid'] + + data = self.get_json('/nodes?instance_uuid=%s' % instance_uuid) + + self.assertThat(data['nodes'], HasLength(1)) + self.assertEqual(node['instance_uuid'], + data['nodes'][0]["instance_uuid"]) + + def test_node_by_instance_uuid_wrong_uuid(self): + ndict = dbutils.get_test_node(uuid=utils.generate_uuid(), + instance_uuid=utils.generate_uuid()) + self.dbapi.create_node(ndict) + wrong_uuid = utils.generate_uuid() + + data = self.get_json('/nodes?instance_uuid=%s' % wrong_uuid) + + self.assertThat(data['nodes'], HasLength(0)) + + def test_node_by_instance_uuid_invalid_uuid(self): + response = self.get_json('/nodes?instance_uuid=fake', + expect_errors=True) + + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + + def test_associated_nodes_insensitive(self): + associated_nodes = self._create_association_test_nodes().\ + get('associated') + + data = self.get_json('/nodes?associated=true') + data1 = self.get_json('/nodes?associated=True') + + uuids = [n['uuid'] for n in data['nodes']] + uuids1 = [n['uuid'] for n in data1['nodes']] + self.assertEqual(sorted(associated_nodes), sorted(uuids1)) + self.assertEqual(sorted(associated_nodes), sorted(uuids)) + + def test_associated_nodes_error(self): + self._create_association_test_nodes() + response = self.get_json('/nodes?associated=blah', expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_unassociated_nodes_insensitive(self): + unassociated_nodes = self._create_association_test_nodes().\ + get('unassociated') + + data = self.get_json('/nodes?associated=false') + data1 = self.get_json('/nodes?associated=FALSE') + + uuids = [n['uuid'] for n in data['nodes']] + uuids1 = [n['uuid'] for n in data1['nodes']] + self.assertEqual(sorted(unassociated_nodes), sorted(uuids1)) + self.assertEqual(sorted(unassociated_nodes), sorted(uuids)) + + def test_unassociated_nodes_with_limit(self): + unassociated_nodes = self._create_association_test_nodes().\ + get('unassociated') + + data = self.get_json('/nodes?associated=False&limit=2') + + self.assertThat(data['nodes'], HasLength(2)) + self.assertTrue(data['nodes'][0]['uuid'] in unassociated_nodes) + + def test_next_link_with_association(self): + self._create_association_test_nodes() + data = self.get_json('/nodes/?limit=3&associated=True') + self.assertThat(data['nodes'], HasLength(3)) + self.assertIn('associated=True', data['next']) + + def test_detail_with_association_filter(self): + associated_nodes = self._create_association_test_nodes().\ + get('associated') + data = self.get_json('/nodes/detail?associated=true') + self.assertIn('driver', data['nodes'][0]) + self.assertEqual(len(associated_nodes), len(data['nodes'])) + + def test_next_link_with_association_with_detail(self): + self._create_association_test_nodes() + data = self.get_json('/nodes/detail?limit=3&associated=true') + self.assertThat(data['nodes'], HasLength(3)) + self.assertIn('driver', data['nodes'][0]) + self.assertIn('associated=True', data['next']) + + def test_detail_with_instance_uuid(self): + ndict = dbutils.get_test_node(uuid=utils.generate_uuid(), + instance_uuid=utils.generate_uuid()) + node = self.dbapi.create_node(ndict) + instance_uuid = node['instance_uuid'] + + data = self.get_json('/nodes/detail?instance_uuid=%s' % instance_uuid) + + self.assertEqual(node['instance_uuid'], + data['nodes'][0]["instance_uuid"]) + self.assertIn('driver', data['nodes'][0]) + self.assertIn('driver_info', data['nodes'][0]) + self.assertIn('extra', data['nodes'][0]) + self.assertIn('properties', data['nodes'][0]) + self.assertIn('chassis_uuid', data['nodes'][0]) + # never expose the chassis_id + self.assertNotIn('chassis_id', data['nodes'][0]) + + def test_maintenance_nodes(self): + nodes = [] + for id in range(5): + ndict = dbutils.get_test_node(id=id, uuid=utils.generate_uuid(), + maintenance=id % 2) + node = self.dbapi.create_node(ndict) + nodes.append(node) + + data = self.get_json('/nodes?maintenance=true') + uuids = [n['uuid'] for n in data['nodes']] + test_uuids_1 = [n.uuid for n in nodes if n.maintenance] + self.assertEqual(sorted(test_uuids_1), sorted(uuids)) + + data = self.get_json('/nodes?maintenance=false') + uuids = [n['uuid'] for n in data['nodes']] + test_uuids_0 = [n.uuid for n in nodes if not n.maintenance] + self.assertEqual(sorted(test_uuids_0), sorted(uuids)) + + def test_maintenance_nodes_error(self): + response = self.get_json('/nodes?associated=true&maintenance=blah', + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_maintenance_nodes_associated(self): + self._create_association_test_nodes() + ndict = dbutils.get_test_node(instance_uuid=utils.generate_uuid(), + maintenance=True) + node = self.dbapi.create_node(ndict) + + data = self.get_json('/nodes?associated=true&maintenance=false') + uuids = [n['uuid'] for n in data['nodes']] + self.assertNotIn(node.uuid, uuids) + data = self.get_json('/nodes?associated=true&maintenance=true') + uuids = [n['uuid'] for n in data['nodes']] + self.assertIn(node.uuid, uuids) + data = self.get_json('/nodes?associated=true&maintenance=TruE') + uuids = [n['uuid'] for n in data['nodes']] + self.assertIn(node.uuid, uuids) + + def test_get_console_information(self): + node = self.dbapi.create_node(dbutils.get_test_node()) + expected_data = {'test': 'test-data'} + with mock.patch.object(rpcapi.ConductorAPI, + 'get_console_information') as mock_gci: + mock_gci.return_value = expected_data + data = self.get_json('/nodes/%s/states/console' % node.uuid) + self.assertEqual(expected_data, data) + mock_gci.assert_called_once_with(mock.ANY, node.uuid, 'test-topic') + + def test_get_console_information_not_supported(self): + node = self.dbapi.create_node(dbutils.get_test_node()) + with mock.patch.object(rpcapi.ConductorAPI, + 'get_console_information') as mock_gci: + mock_gci.side_effect = exception.UnsupportedDriverExtension( + extension='console', driver='test-driver') + ret = self.get_json('/nodes/%s/states/console' % node.uuid, + expect_errors=True) + self.assertEqual(400, ret.status_code) + mock_gci.assert_called_once_with(mock.ANY, node.uuid, 'test-topic') + + +class TestPatch(base.FunctionalTest): + + def setUp(self): + super(TestPatch, self).setUp() + cdict = dbutils.get_test_chassis() + self.chassis = self.dbapi.create_chassis(cdict) + ndict = dbutils.get_test_node() + self.node = self.dbapi.create_node(ndict) + p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') + self.mock_gtf = p.start() + self.mock_gtf.return_value = 'test-topic' + self.addCleanup(p.stop) + p = mock.patch.object(rpcapi.ConductorAPI, 'update_node') + self.mock_update_node = p.start() + self.addCleanup(p.stop) + p = mock.patch.object(rpcapi.ConductorAPI, 'change_node_power_state') + self.mock_cnps = p.start() + self.addCleanup(p.stop) + + def test_update_ok(self): + self.mock_update_node.return_value = self.node + self.mock_update_node.return_value.updated_at = \ + "2013-12-03T06:20:41.184720+00:00" + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/instance_uuid', + 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', + 'op': 'replace'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + self.assertEqual(self.mock_update_node.return_value.updated_at, + timeutils.parse_isotime(response.json['updated_at'])) + self.mock_update_node.assert_called_once_with( + mock.ANY, mock.ANY, 'test-topic') + + def test_update_state(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'power_state': 'new state'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_update_fails_bad_driver_info(self): + fake_err = 'Fake Error Message' + self.mock_update_node.side_effect = exception.InvalidParameterValue( + fake_err) + + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/driver_info/this', + 'value': 'foo', + 'op': 'add'}, + {'path': '/driver_info/that', + 'value': 'bar', + 'op': 'add'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + + self.mock_update_node.assert_called_once_with( + mock.ANY, mock.ANY, 'test-topic') + + def test_update_fails_bad_driver(self): + self.mock_gtf.side_effect = exception.NoValidHost('Fake Error') + + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/driver', + 'value': 'bad-driver', + 'op': 'replace'}], + expect_errors=True) + + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + + def test_update_fails_bad_state(self): + fake_err = 'Fake Power State' + self.mock_update_node.side_effect = exception.NodeInWrongPowerState( + node=self.node['uuid'], pstate=fake_err) + + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/instance_uuid', + 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', + 'op': 'replace'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(409, response.status_code) + + self.mock_update_node.assert_called_once_with( + mock.ANY, mock.ANY, 'test-topic') + + def test_add_ok(self): + self.mock_update_node.return_value = self.node + + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/extra/foo', + 'value': 'bar', + 'op': 'add'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + + self.mock_update_node.assert_called_once_with( + mock.ANY, mock.ANY, 'test-topic') + + def test_add_fail(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/foo', 'value': 'bar', 'op': 'add'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_remove_ok(self): + self.mock_update_node.return_value = self.node + + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/extra', + 'op': 'remove'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + + self.mock_update_node.assert_called_once_with( + mock.ANY, mock.ANY, 'test-topic') + + def test_remove_non_existent_property_fail(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/extra/non-existent', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_update_state_in_progress(self): + ndict = dbutils.get_test_node(id=99, uuid=utils.generate_uuid(), + target_power_state=states.POWER_OFF) + node = self.dbapi.create_node(ndict) + response = self.patch_json('/nodes/%s' % node['uuid'], + [{'path': '/extra/foo', 'value': 'bar', + 'op': 'add'}], expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(409, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_patch_ports_subresource(self): + response = self.patch_json('/nodes/%s/ports' % self.node['uuid'], + [{'path': '/extra/foo', 'value': 'bar', + 'op': 'add'}], expect_errors=True) + self.assertEqual(403, response.status_int) + + def test_remove_uuid(self): + ndict = dbutils.get_test_node() + response = self.patch_json('/nodes/%s' % ndict['uuid'], + [{'path': '/uuid', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_remove_mandatory_field(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/driver', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_replace_non_existent_chassis_uuid(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/chassis_uuid', + 'value': 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa', + 'op': 'replace'}], expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_remove_internal_field(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/last_error', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_replace_internal_field(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/power_state', 'op': 'replace', + 'value': 'fake-state'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_replace_maintenance(self): + self.mock_update_node.return_value = self.node + + response = self.patch_json('/nodes/%s' % self.node.uuid, + [{'path': '/maintenance', 'op': 'replace', + 'value': 'true'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + + self.mock_update_node.assert_called_once_with( + mock.ANY, mock.ANY, 'test-topic') + + def test_replace_consoled_enabled(self): + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/console_enabled', + 'op': 'replace', 'value': True}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_replace_provision_updated_at(self): + test_time = '2000-01-01 00:00:00' + response = self.patch_json('/nodes/%s' % self.node['uuid'], + [{'path': '/provision_updated_at', + 'op': 'replace', 'value': test_time}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + +class TestPost(base.FunctionalTest): + + def setUp(self): + super(TestPost, self).setUp() + cdict = dbutils.get_test_chassis() + self.chassis = self.dbapi.create_chassis(cdict) + p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') + self.mock_gtf = p.start() + self.mock_gtf.return_value = 'test-topic' + self.addCleanup(p.stop) + + @mock.patch.object(timeutils, 'utcnow') + def test_create_node(self, mock_utcnow): + ndict = post_get_test_node() + test_time = datetime.datetime(2000, 1, 1, 0, 0) + mock_utcnow.return_value = test_time + response = self.post_json('/nodes', ndict) + self.assertEqual(201, response.status_int) + result = self.get_json('/nodes/%s' % ndict['uuid']) + self.assertEqual(ndict['uuid'], result['uuid']) + self.assertFalse(result['updated_at']) + return_created_at = timeutils.parse_isotime( + result['created_at']).replace(tzinfo=None) + self.assertEqual(test_time, return_created_at) + + def test_create_node_valid_extra(self): + ndict = post_get_test_node(extra={'foo': 123}) + self.post_json('/nodes', ndict) + result = self.get_json('/nodes/%s' % ndict['uuid']) + self.assertEqual(ndict['extra'], result['extra']) + + def test_create_node_invalid_extra(self): + ndict = post_get_test_node(extra={'foo': 0.123}) + response = self.post_json('/nodes', ndict, expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_vendor_passthru_ok(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + uuid = ndict['uuid'] + info = {'foo': 'bar'} + + with mock.patch.object( + rpcapi.ConductorAPI, 'vendor_passthru') as mock_vendor: + mock_vendor.return_value = 'OK' + response = self.post_json('/nodes/%s/vendor_passthru/test' % uuid, + info, expect_errors=False) + mock_vendor.assert_called_once_with( + mock.ANY, uuid, 'test', info, 'test-topic') + self.assertEqual('"OK"', response.body) + self.assertEqual(202, response.status_code) + + def test_vendor_passthru_no_such_method(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + uuid = ndict['uuid'] + info = {'foo': 'bar'} + + with mock.patch.object( + rpcapi.ConductorAPI, 'vendor_passthru') as mock_vendor: + mock_vendor.side_effect = exception.UnsupportedDriverExtension( + {'driver': ndict['driver'], + 'node': uuid, + 'extension': 'test'}) + response = self.post_json('/nodes/%s/vendor_passthru/test' % uuid, + info, expect_errors=True) + mock_vendor.assert_called_once_with( + mock.ANY, uuid, 'test', info, 'test-topic') + self.assertEqual(400, response.status_code) + + def test_vendor_passthru_without_method(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + response = self.post_json('/nodes/%s/vendor_passthru' % ndict['uuid'], + {'foo': 'bar'}, expect_errors=True) + self.assertEqual('application/json', response.content_type, ) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_post_ports_subresource(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + pdict = apiutils.port_post_data(node_id=None) + pdict['node_uuid'] = ndict['uuid'] + response = self.post_json('/nodes/ports', pdict, + expect_errors=True) + self.assertEqual(403, response.status_int) + + def test_create_node_no_mandatory_field_driver(self): + ndict = post_get_test_node() + del ndict['driver'] + response = self.post_json('/nodes', ndict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_node_invalid_driver(self): + ndict = post_get_test_node() + self.mock_gtf.side_effect = exception.NoValidHost('Fake Error') + response = self.post_json('/nodes', ndict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_node_no_chassis_uuid(self): + ndict = post_get_test_node() + del ndict['chassis_uuid'] + response = self.post_json('/nodes', ndict) + self.assertEqual('application/json', response.content_type) + self.assertEqual(201, response.status_int) + + def test_create_node_chassis_uuid_not_found(self): + ndict = post_get_test_node( + chassis_uuid='1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e') + response = self.post_json('/nodes', ndict, expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_int) + self.assertTrue(response.json['error_message']) + + def test_create_node_with_internal_field(self): + ndict = post_get_test_node() + ndict['reservation'] = 'fake' + response = self.post_json('/nodes', ndict, expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_int) + self.assertTrue(response.json['error_message']) + + +class TestDelete(base.FunctionalTest): + + def setUp(self): + super(TestDelete, self).setUp() + cdict = dbutils.get_test_chassis() + self.chassis = self.dbapi.create_chassis(cdict) + p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') + self.mock_gtf = p.start() + self.mock_gtf.return_value = 'test-topic' + self.addCleanup(p.stop) + + @mock.patch.object(rpcapi.ConductorAPI, 'destroy_node') + def test_delete_node(self, mock_dn): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + self.delete('/nodes/%s' % ndict['uuid']) + mock_dn.assert_called_once_with(mock.ANY, ndict['uuid'], 'test-topic') + + @mock.patch.object(objects.Node, 'get_by_uuid') + def test_delete_node_not_found(self, mock_gbu): + ndict = dbutils.get_test_node() + mock_gbu.side_effect = exception.NodeNotFound(node=ndict['uuid']) + + response = self.delete('/nodes/%s' % ndict['uuid'], expect_errors=True) + self.assertEqual(404, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + mock_gbu.assert_called_once_with(mock.ANY, ndict['uuid']) + + def test_delete_ports_subresource(self): + ndict = dbutils.get_test_node() + self.dbapi.create_node(ndict) + response = self.delete('/nodes/%s/ports' % ndict['uuid'], + expect_errors=True) + self.assertEqual(403, response.status_int) + + @mock.patch.object(rpcapi.ConductorAPI, 'destroy_node') + def test_delete_associated(self, mock_dn): + ndict = dbutils.get_test_node( + instance_uuid='aaaaaaaa-1111-bbbb-2222-cccccccccccc') + node = self.dbapi.create_node(ndict) + mock_dn.side_effect = exception.NodeAssociated(node=node.uuid, + instance=node.instance_uuid) + + response = self.delete('/nodes/%s' % ndict['uuid'], expect_errors=True) + self.assertEqual(409, response.status_int) + mock_dn.assert_called_once_with(mock.ANY, node.uuid, 'test-topic') + + +class TestPut(base.FunctionalTest): + + def setUp(self): + super(TestPut, self).setUp() + cdict = dbutils.get_test_chassis() + self.chassis = self.dbapi.create_chassis(cdict) + ndict = dbutils.get_test_node() + self.node = self.dbapi.create_node(ndict) + p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for') + self.mock_gtf = p.start() + self.mock_gtf.return_value = 'test-topic' + self.addCleanup(p.stop) + p = mock.patch.object(rpcapi.ConductorAPI, 'change_node_power_state') + self.mock_cnps = p.start() + self.addCleanup(p.stop) + p = mock.patch.object(rpcapi.ConductorAPI, 'do_node_deploy') + self.mock_dnd = p.start() + self.addCleanup(p.stop) + p = mock.patch.object(rpcapi.ConductorAPI, 'do_node_tear_down') + self.mock_dntd = p.start() + self.addCleanup(p.stop) + + def test_power_state(self): + response = self.put_json('/nodes/%s/states/power' % self.node['uuid'], + {'target': states.POWER_ON}) + self.assertEqual(202, response.status_code) + self.assertEqual('', response.body) + self.mock_cnps.assert_called_once_with(mock.ANY, + self.node['uuid'], + states.POWER_ON, + 'test-topic') + + def test_power_invalid_state_request(self): + ret = self.put_json('/nodes/%s/states/power' % self.node.uuid, + {'target': 'not-supported'}, expect_errors=True) + self.assertEqual(400, ret.status_code) + + def test_provision_with_deploy(self): + ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, + {'target': states.ACTIVE}) + self.assertEqual(202, ret.status_code) + self.assertEqual('', ret.body) + self.mock_dnd.assert_called_once_with( + mock.ANY, self.node.uuid, 'test-topic') + + def test_provision_with_tear_down(self): + ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, + {'target': states.DELETED}) + self.assertEqual(202, ret.status_code) + self.assertEqual('', ret.body) + self.mock_dntd.assert_called_once_with( + mock.ANY, self.node.uuid, 'test-topic') + + def test_provision_invalid_state_request(self): + ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, + {'target': 'not-supported'}, expect_errors=True) + self.assertEqual(400, ret.status_code) + + def test_provision_already_in_progress(self): + ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), + target_provision_state=states.ACTIVE) + node = self.dbapi.create_node(ndict) + ret = self.put_json('/nodes/%s/states/provision' % node.uuid, + {'target': states.ACTIVE}, + expect_errors=True) + self.assertEqual(409, ret.status_code) # Conflict + + def test_provision_with_tear_down_in_progress_deploywait(self): + ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), + provision_state=states.DEPLOYWAIT, + target_provision_state=states.DEPLOYDONE) + node = self.dbapi.create_node(ndict) + ret = self.put_json('/nodes/%s/states/provision' % node.uuid, + {'target': states.DELETED}) + self.assertEqual(202, ret.status_code) + self.assertEqual('', ret.body) + self.mock_dntd.assert_called_once_with( + mock.ANY, node.uuid, 'test-topic') + + def test_provision_already_in_state(self): + ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), + target_provision_state=states.NOSTATE, + provision_state=states.ACTIVE) + node = self.dbapi.create_node(ndict) + ret = self.put_json('/nodes/%s/states/provision' % node.uuid, + {'target': states.ACTIVE}, + expect_errors=True) + self.assertEqual(400, ret.status_code) + + def test_set_console_mode_enabled(self): + with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ + as mock_scm: + ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, + {'enabled': "true"}) + self.assertEqual(202, ret.status_code) + self.assertEqual('', ret.body) + mock_scm.assert_called_once_with(mock.ANY, self.node.uuid, + True, 'test-topic') + + def test_set_console_mode_disabled(self): + with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ + as mock_scm: + ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, + {'enabled': "false"}) + self.assertEqual(202, ret.status_code) + self.assertEqual('', ret.body) + mock_scm.assert_called_once_with(mock.ANY, self.node.uuid, + False, 'test-topic') + + def test_set_console_mode_bad_request(self): + with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ + as mock_scm: + ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, + {'enabled': "invalid-value"}, + expect_errors=True) + self.assertEqual(400, ret.status_code) + # assert set_console_mode wasn't called + assert not mock_scm.called + + def test_set_console_mode_bad_request_missing_parameter(self): + with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ + as mock_scm: + ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, + {}, expect_errors=True) + self.assertEqual(400, ret.status_code) + # assert set_console_mode wasn't called + assert not mock_scm.called + + def test_set_console_mode_console_not_supported(self): + with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \ + as mock_scm: + mock_scm.side_effect = exception.UnsupportedDriverExtension( + extension='console', driver='test-driver') + ret = self.put_json('/nodes/%s/states/console' % self.node.uuid, + {'enabled': "true"}, expect_errors=True) + self.assertEqual(400, ret.status_code) + mock_scm.assert_called_once_with(mock.ANY, self.node.uuid, + True, 'test-topic') + + def test_provision_node_in_maintenance_fail(self): + with mock.patch.object(rpcapi.ConductorAPI, 'do_node_deploy') as dnd: + ndict = dbutils.get_test_node(id=1, uuid=utils.generate_uuid(), + maintenance=True) + node = self.dbapi.create_node(ndict) + dnd.side_effect = exception.NodeInMaintenance(op='provisioning', + node=node.uuid) + + ret = self.put_json('/nodes/%s/states/provision' % node.uuid, + {'target': states.ACTIVE}, + expect_errors=True) + self.assertEqual(400, ret.status_code) + self.assertTrue(ret.json['error_message']) diff -Nru ironic-2014.1~b3/ironic/tests/api/v1/test_ports.py ironic-2014.1~rc1/ironic/tests/api/v1/test_ports.py --- ironic-2014.1~b3/ironic/tests/api/v1/test_ports.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/v1/test_ports.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,495 @@ +# -*- encoding: utf-8 -*- +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# 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 API /ports/ methods. +""" + +import datetime + +import fixtures +import mock +from oslo.config import cfg + +from ironic.common import utils +from ironic.conductor import manager +from ironic.openstack.common import timeutils +from ironic.tests.api import base +from ironic.tests.api import utils as apiutils +from ironic.tests.db import utils as dbutils + + +# NOTE(lucasagomes): When creating a port via API (POST) +# we have to use node_uuid +def post_get_test_port(**kw): + port = apiutils.port_post_data(**kw) + node = dbutils.get_test_node() + del port['node_id'] + port['node_uuid'] = kw.get('node_uuid', node['uuid']) + return port + + +class TestListPorts(base.FunctionalTest): + + def setUp(self): + super(TestListPorts, self).setUp() + ndict = dbutils.get_test_node() + self.node = self.dbapi.create_node(ndict) + + def test_empty(self): + data = self.get_json('/ports') + self.assertEqual([], data['ports']) + + def test_one(self): + ndict = dbutils.get_test_port() + port = self.dbapi.create_port(ndict) + data = self.get_json('/ports') + self.assertEqual(port['uuid'], data['ports'][0]["uuid"]) + self.assertNotIn('extra', data['ports'][0]) + self.assertNotIn('node_uuid', data['ports'][0]) + # never expose the node_id + self.assertNotIn('node_id', data['ports'][0]) + + def test_detail(self): + pdict = dbutils.get_test_port() + port = self.dbapi.create_port(pdict) + data = self.get_json('/ports/detail') + self.assertEqual(port['uuid'], data['ports'][0]["uuid"]) + self.assertIn('extra', data['ports'][0]) + self.assertIn('node_uuid', data['ports'][0]) + # never expose the node_id + self.assertNotIn('node_id', data['ports'][0]) + + def test_detail_against_single(self): + pdict = dbutils.get_test_port() + port = self.dbapi.create_port(pdict) + response = self.get_json('/ports/%s/detail' % port['uuid'], + expect_errors=True) + self.assertEqual(404, response.status_int) + + def test_many(self): + ports = [] + for id in range(5): + ndict = dbutils.get_test_port(id=id, + uuid=utils.generate_uuid(), + address='52:54:00:cf:2d:3%s' % id) + port = self.dbapi.create_port(ndict) + ports.append(port['uuid']) + data = self.get_json('/ports') + self.assertEqual(len(ports), len(data['ports'])) + + uuids = [n['uuid'] for n in data['ports']] + self.assertEqual(ports.sort(), uuids.sort()) + + def test_links(self): + uuid = utils.generate_uuid() + ndict = dbutils.get_test_port(id=1, uuid=uuid) + self.dbapi.create_port(ndict) + data = self.get_json('/ports/%s' % uuid) + self.assertIn('links', data.keys()) + self.assertEqual(2, len(data['links'])) + self.assertIn(uuid, data['links'][0]['href']) + self.assertTrue(self.validate_link(data['links'][0]['href'])) + self.assertTrue(self.validate_link(data['links'][1]['href'])) + + def test_collection_links(self): + ports = [] + for id in range(5): + ndict = dbutils.get_test_port(id=id, + uuid=utils.generate_uuid(), + address='52:54:00:cf:2d:3%s' % id) + port = self.dbapi.create_port(ndict) + ports.append(port['uuid']) + data = self.get_json('/ports/?limit=3') + self.assertEqual(3, len(data['ports'])) + + next_marker = data['ports'][-1]['uuid'] + self.assertIn(next_marker, data['next']) + + def test_collection_links_default_limit(self): + cfg.CONF.set_override('max_limit', 3, 'api') + ports = [] + for id in range(5): + ndict = dbutils.get_test_port(id=id, + uuid=utils.generate_uuid(), + address='52:54:00:cf:2d:3%s' % id) + port = self.dbapi.create_port(ndict) + ports.append(port['uuid']) + data = self.get_json('/ports') + self.assertEqual(3, len(data['ports'])) + + next_marker = data['ports'][-1]['uuid'] + self.assertIn(next_marker, data['next']) + + +class TestPatch(base.FunctionalTest): + + def setUp(self): + super(TestPatch, self).setUp() + ndict = dbutils.get_test_node() + self.node = self.dbapi.create_node(ndict) + self.pdict = dbutils.get_test_port(id=None) + self.dbapi.create_port(self.pdict) + + def noop(*args, **kwargs): + pass + + self.useFixture(fixtures.MonkeyPatch( + 'ironic.conductor.rpcapi.ConductorAPI.get_topic_for', + noop)) + + service = manager.ConductorManager('test-host', 'test-topic') + + def manager_update_port(*args, **kwargs): + return service.update_port(*args[1:3]) + + self.useFixture(fixtures.MonkeyPatch( + 'ironic.conductor.rpcapi.ConductorAPI.update_port', + manager_update_port)) + + @mock.patch.object(timeutils, 'utcnow') + def test_update_byid(self, mock_utcnow): + extra = {'foo': 'bar'} + test_time = datetime.datetime(2000, 1, 1, 0, 0) + mock_utcnow.return_value = test_time + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/extra/foo', + 'value': 'bar', + 'op': 'add'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % self.pdict['uuid']) + self.assertEqual(extra, result['extra']) + return_updated_at = timeutils.parse_isotime( + result['updated_at']).replace(tzinfo=None) + self.assertEqual(test_time, return_updated_at) + + def test_update_byaddress(self): + response = self.patch_json('/ports/%s' % self.pdict['address'], + [{'path': '/extra/foo', 'value': 'bar', + 'op': 'add'}], expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertIn(self.pdict['address'], response.json['error_message']) + + def test_update_not_found(self): + uuid = utils.generate_uuid() + response = self.patch_json('/ports/%s' % uuid, + [{'path': '/extra/a', + 'value': 'b', + 'op': 'add'}], + expect_errors=True) + self.assertEqual(404, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_replace_singular(self): + address = 'aa:bb:cc:dd:ee:ff' + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/address', + 'value': address, 'op': 'replace'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % self.pdict['uuid']) + self.assertEqual(address, result['address']) + + def test_replace_address_already_exist(self): + pdict1 = dbutils.get_test_port(address='aa:aa:aa:aa:aa:aa', + uuid=utils.generate_uuid(), + id=None) + self.dbapi.create_port(pdict1) + + pdict2 = dbutils.get_test_port(address='bb:bb:bb:bb:bb:bb', + uuid=utils.generate_uuid(), + id=None) + self.dbapi.create_port(pdict2) + + response = self.patch_json('/ports/%s' % pdict1['uuid'], + [{'path': '/address', + 'value': pdict2['address'], + 'op': 'replace'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(409, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_replace_nodeid_dont_exist(self): + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/node_uuid', + 'value': '12506333-a81c-4d59-9987-889ed5f8687b', + 'op': 'replace'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_replace_multi(self): + extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} + pdict = dbutils.get_test_port(extra=extra, + address="AA:BB:CC:DD:EE:FF", + uuid=utils.generate_uuid()) + self.dbapi.create_port(pdict) + + new_value = 'new value' + response = self.patch_json('/ports/%s' % pdict['uuid'], + [{'path': '/extra/foo2', + 'value': new_value, 'op': 'replace'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % pdict['uuid']) + + extra["foo2"] = new_value + self.assertEqual(extra, result['extra']) + + def test_remove_multi(self): + extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"} + pdict = dbutils.get_test_port(extra=extra, + address="aa:bb:cc:dd:ee:ff", + uuid=utils.generate_uuid()) + self.dbapi.create_port(pdict) + + # Removing one item from the collection + response = self.patch_json('/ports/%s' % pdict['uuid'], + [{'path': '/extra/foo2', 'op': 'remove'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % pdict['uuid']) + extra.pop("foo2") + self.assertEqual(extra, result['extra']) + + # Removing the collection + response = self.patch_json('/ports/%s' % pdict['uuid'], + [{'path': '/extra', 'op': 'remove'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % pdict['uuid']) + self.assertEqual({}, result['extra']) + + # Assert nothing else was changed + self.assertEqual(pdict['uuid'], result['uuid']) + self.assertEqual(pdict['address'], result['address']) + + def test_remove_non_existent_property_fail(self): + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/extra/non-existent', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type, ) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_remove_mandatory_field(self): + pdict = dbutils.get_test_port(address="AA:BB:CC:DD:EE:FF", + uuid=utils.generate_uuid()) + self.dbapi.create_port(pdict) + + response = self.patch_json('/ports/%s' % pdict['uuid'], + [{'path': '/address', 'op': 'remove'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_code) + self.assertTrue(response.json['error_message']) + + def test_add_singular(self): + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/foo', 'value': 'bar', + 'op': 'add'}], + expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_int) + self.assertTrue(response.json['error_message']) + + def test_add_multi(self): + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/extra/foo1', 'value': 'bar1', + 'op': 'add'}, + {'path': '/extra/foo2', 'value': 'bar2', + 'op': 'add'}]) + self.assertEqual('application/json', response.content_type) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % self.pdict['uuid']) + expected = {"foo1": "bar1", "foo2": "bar2"} + self.assertEqual(expected, result['extra']) + + def test_remove_uuid(self): + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/uuid', 'op': 'remove'}], + expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_update_address_invalid_format(self): + pdict = dbutils.get_test_port(address="AA:BB:CC:DD:EE:FF", + uuid=utils.generate_uuid()) + self.dbapi.create_port(pdict) + response = self.patch_json('/ports/%s' % pdict['uuid'], + [{'path': '/address', + 'value': 'invalid-format', + 'op': 'replace'}], + expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_update_port_address_normalized(self): + new_address = 'AA:BB:CC:DD:EE:FF' + response = self.patch_json('/ports/%s' % self.pdict['uuid'], + [{'path': '/address', 'value': new_address, + 'op': 'replace'}]) + self.assertEqual(200, response.status_code) + result = self.get_json('/ports/%s' % self.pdict['uuid']) + self.assertEqual(new_address.lower(), result['address']) + + +class TestPost(base.FunctionalTest): + + def setUp(self): + super(TestPost, self).setUp() + ndict = dbutils.get_test_node() + self.node = self.dbapi.create_node(ndict) + + @mock.patch.object(timeutils, 'utcnow') + def test_create_port(self, mock_utcnow): + pdict = post_get_test_port() + test_time = datetime.datetime(2000, 1, 1, 0, 0) + mock_utcnow.return_value = test_time + response = self.post_json('/ports', pdict) + self.assertEqual(201, response.status_int) + result = self.get_json('/ports/%s' % pdict['uuid']) + self.assertEqual(pdict['uuid'], result['uuid']) + self.assertFalse(result['updated_at']) + return_created_at = timeutils.parse_isotime( + result['created_at']).replace(tzinfo=None) + self.assertEqual(test_time, return_created_at) + + def test_create_port_generate_uuid(self): + pdict = post_get_test_port() + del pdict['uuid'] + response = self.post_json('/ports', pdict) + result = self.get_json('/ports/%s' % response.json['uuid']) + self.assertEqual(pdict['address'], result['address']) + self.assertTrue(utils.is_uuid_like(result['uuid'])) + + def test_create_port_valid_extra(self): + pdict = post_get_test_port(extra={'foo': 123}) + self.post_json('/ports', pdict) + result = self.get_json('/ports/%s' % pdict['uuid']) + self.assertEqual(pdict['extra'], result['extra']) + + def test_create_port_invalid_extra(self): + pdict = post_get_test_port(extra={'foo': 0.123}) + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_port_no_mandatory_field_address(self): + pdict = post_get_test_port() + del pdict['address'] + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_port_no_mandatory_field_node_uuid(self): + pdict = post_get_test_port() + del pdict['node_uuid'] + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_port_invalid_addr_format(self): + pdict = post_get_test_port(address='invalid-format') + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_port_address_normalized(self): + address = 'AA:BB:CC:DD:EE:FF' + pdict = post_get_test_port(address=address) + self.post_json('/ports', pdict) + result = self.get_json('/ports/%s' % pdict['uuid']) + self.assertEqual(address.lower(), result['address']) + + def test_create_port_with_hyphens_delimiter(self): + pdict = post_get_test_port() + colonsMAC = pdict['address'] + hyphensMAC = colonsMAC.replace(':', '-') + pdict['address'] = hyphensMAC + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_create_port_invalid_node_uuid_format(self): + pdict = post_get_test_port(node_uuid='invalid-format') + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_int) + self.assertTrue(response.json['error_message']) + + def test_node_uuid_to_node_id_mapping(self): + pdict = post_get_test_port(node_uuid=self.node['uuid']) + self.post_json('/ports', pdict) + # GET doesn't return the node_id it's an internal value + port = self.dbapi.get_port(pdict['uuid']) + self.assertEqual(self.node['id'], port.node_id) + + def test_create_port_node_uuid_not_found(self): + pdict = post_get_test_port( + node_uuid='1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e') + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual('application/json', response.content_type) + self.assertEqual(400, response.status_int) + self.assertTrue(response.json['error_message']) + + def test_create_port_address_already_exist(self): + address = 'AA:AA:AA:11:22:33' + pdict = post_get_test_port(address=address) + self.post_json('/ports', pdict) + pdict['uuid'] = utils.generate_uuid() + response = self.post_json('/ports', pdict, expect_errors=True) + self.assertEqual(409, response.status_int) + self.assertEqual('application/json', response.content_type) + error_msg = response.json['error_message'] + self.assertTrue(error_msg) + self.assertIn(address, error_msg.upper()) + + +class TestDelete(base.FunctionalTest): + + def setUp(self): + super(TestDelete, self).setUp() + ndict = dbutils.get_test_node() + self.node = self.dbapi.create_node(ndict) + pdict = dbutils.get_test_port() + self.dbapi.create_port(pdict) + + def test_delete_port_byid(self): + pdict = dbutils.get_test_port() + self.delete('/ports/%s' % pdict['uuid']) + response = self.get_json('/ports/%s' % pdict['uuid'], + expect_errors=True) + self.assertEqual(404, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertTrue(response.json['error_message']) + + def test_delete_port_byaddress(self): + pdict = dbutils.get_test_port() + response = self.delete('/ports/%s' % pdict['address'], + expect_errors=True) + self.assertEqual(400, response.status_int) + self.assertEqual('application/json', response.content_type) + self.assertIn(pdict['address'], response.json['error_message']) diff -Nru ironic-2014.1~b3/ironic/tests/api/v1/test_types.py ironic-2014.1~rc1/ironic/tests/api/v1/test_types.py --- ironic-2014.1~b3/ironic/tests/api/v1/test_types.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/v1/test_types.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,204 @@ +# coding: utf-8 +# +# 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 mock +import six +import webtest +import wsme + +from ironic.api.controllers.v1 import types +from ironic.common import exception +from ironic.common import utils +from ironic.tests.api import base + + +class TestMacAddressType(base.FunctionalTest): + + def test_valid_mac_addr(self): + test_mac = 'aa:bb:cc:11:22:33' + with mock.patch.object(utils, 'validate_and_normalize_mac') as m_mock: + types.MacAddressType.validate(test_mac) + m_mock.assert_called_once_with(test_mac) + + def test_invalid_mac_addr(self): + self.assertRaises(exception.InvalidMAC, + types.MacAddressType.validate, 'invalid-mac') + + +class TestUuidType(base.FunctionalTest): + + def test_valid_uuid(self): + test_uuid = '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' + with mock.patch.object(utils, 'is_uuid_like') as uuid_mock: + types.UuidType.validate(test_uuid) + uuid_mock.assert_called_once_with(test_uuid) + + def test_invalid_uuid(self): + self.assertRaises(exception.InvalidUUID, + types.UuidType.validate, 'invalid-uuid') + + +class MyPatchType(types.JsonPatchType): + """Helper class for TestJsonPatchType tests.""" + + @staticmethod + def mandatory_attrs(): + return ['/mandatory'] + + @staticmethod + def internal_attrs(): + return ['/internal'] + + +class MyRoot(wsme.WSRoot): + """Helper class for TestJsonPatchType tests.""" + + @wsme.expose([wsme.types.text], body=[MyPatchType]) + @wsme.validate([MyPatchType]) + def test(self, patch): + return patch + + +class TestJsonPatchType(base.FunctionalTest): + + def setUp(self): + super(TestJsonPatchType, self).setUp() + self.app = webtest.TestApp(MyRoot(['restjson']).wsgiapp()) + + def _patch_json(self, params, expect_errors=False): + return self.app.patch_json('/test', params=params, + headers={'Accept': 'application/json'}, + expect_errors=expect_errors) + + def test_valid_patches(self): + valid_patches = [{'path': '/extra/foo', 'op': 'remove'}, + {'path': '/extra/foo', 'op': 'add', 'value': 'bar'}, + {'path': '/foo', 'op': 'replace', 'value': 'bar'}] + ret = self._patch_json(valid_patches, False) + self.assertEqual(200, ret.status_int) + self.assertEqual(sorted(valid_patches), sorted(ret.json)) + + def test_cannot_update_internal_attr(self): + patch = [{'path': '/internal', 'op': 'replace', 'value': 'foo'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_mandatory_attr(self): + patch = [{'op': 'replace', 'path': '/mandatory', 'value': 'foo'}] + ret = self._patch_json(patch, False) + self.assertEqual(200, ret.status_int) + self.assertEqual(patch, ret.json) + + def test_cannot_remove_mandatory_attr(self): + patch = [{'op': 'remove', 'path': '/mandatory'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_missing_required_fields_path(self): + missing_path = [{'op': 'remove'}] + ret = self._patch_json(missing_path, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_missing_required_fields_op(self): + missing_op = [{'path': '/foo'}] + ret = self._patch_json(missing_op, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_invalid_op(self): + patch = [{'path': '/foo', 'op': 'invalid'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_invalid_path(self): + patch = [{'path': 'invalid-path', 'op': 'remove'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_cannot_add_to_root(self): + patch = [{'path': '/foo', 'op': 'add', 'value': 'bar'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_cannot_add_with_no_value(self): + patch = [{'path': '/extra/foo', 'op': 'add'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + def test_cannot_replace_with_no_value(self): + patch = [{'path': '/foo', 'op': 'replace'}] + ret = self._patch_json(patch, True) + self.assertEqual(400, ret.status_int) + self.assertTrue(ret.json['faultstring']) + + +class TestMultiType(base.FunctionalTest): + + def test_valid_values(self): + vt = types.MultiType(wsme.types.text, six.integer_types) + value = vt.validate("hello") + self.assertEqual("hello", value) + value = vt.validate(10) + self.assertEqual(10, value) + + def test_invalid_values(self): + vt = types.MultiType(wsme.types.text, six.integer_types) + self.assertRaises(ValueError, vt.validate, 0.10) + self.assertRaises(ValueError, vt.validate, object()) + + def test_multitype_tostring(self): + vt = types.MultiType(str, int) + vts = str(vt) + self.assertIn(str(str), vts) + self.assertIn(str(int), vts) + + +class TestBooleanType(base.FunctionalTest): + + def test_valid_true_values(self): + v = types.BooleanType() + self.assertTrue(v.validate("true")) + self.assertTrue(v.validate("TRUE")) + self.assertTrue(v.validate("True")) + self.assertTrue(v.validate("t")) + self.assertTrue(v.validate("1")) + self.assertTrue(v.validate("y")) + self.assertTrue(v.validate("yes")) + self.assertTrue(v.validate("on")) + + def test_valid_false_values(self): + v = types.BooleanType() + self.assertFalse(v.validate("false")) + self.assertFalse(v.validate("FALSE")) + self.assertFalse(v.validate("False")) + self.assertFalse(v.validate("f")) + self.assertFalse(v.validate("0")) + self.assertFalse(v.validate("n")) + self.assertFalse(v.validate("no")) + self.assertFalse(v.validate("off")) + + def test_invalid_value(self): + v = types.BooleanType() + self.assertRaises(exception.Invalid, v.validate, "invalid-value") + self.assertRaises(exception.Invalid, v.validate, "01") diff -Nru ironic-2014.1~b3/ironic/tests/api/v1/test_utils.py ironic-2014.1~rc1/ironic/tests/api/v1/test_utils.py --- ironic-2014.1~b3/ironic/tests/api/v1/test_utils.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/api/v1/test_utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,46 @@ +# 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 wsme + +from ironic.api.controllers.v1 import utils +from ironic.tests.api import base + +from oslo.config import cfg + +CONF = cfg.CONF + + +class TestApiUtils(base.FunctionalTest): + + def test_validate_limit(self): + limit = utils.validate_limit(10) + self.assertEqual(10, 10) + + # max limit + limit = utils.validate_limit(999999999) + self.assertEqual(CONF.api.max_limit, limit) + + # negative + self.assertRaises(wsme.exc.ClientSideError, utils.validate_limit, -1) + + def test_validate_sort_dir(self): + sort_dir = utils.validate_sort_dir('asc') + self.assertEqual('asc', sort_dir) + + # invalid sort_dir parameter + self.assertRaises(wsme.exc.ClientSideError, + utils.validate_sort_dir, + 'fake-sort') diff -Nru ironic-2014.1~b3/ironic/tests/base.py ironic-2014.1~rc1/ironic/tests/base.py --- ironic-2014.1~b3/ironic/tests/base.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/base.py 2014-04-01 19:49:34.000000000 +0000 @@ -38,8 +38,8 @@ from ironic.db.sqlalchemy import models from ironic.common import paths +from ironic.db.sqlalchemy import api as sqla_api from ironic.objects import base as objects_base -from ironic.openstack.common.db.sqlalchemy import session from ironic.openstack.common import log as logging from ironic.tests import conf_fixture from ironic.tests import policy_fixture @@ -54,9 +54,10 @@ CONF = cfg.CONF CONF.register_opts(test_opts) CONF.import_opt('connection', - 'ironic.openstack.common.db.sqlalchemy.session', + 'ironic.openstack.common.db.options', + group='database') +CONF.import_opt('sqlite_db', 'ironic.openstack.common.db.options', group='database') -CONF.import_opt('sqlite_db', 'ironic.openstack.common.db.sqlalchemy.session') CONF.set_override('use_stderr', False) logging.setup('ironic') @@ -66,13 +67,13 @@ class Database(fixtures.Fixture): - def __init__(self, db_session, db_migrate, sql_connection, + def __init__(self, db_api, db_migrate, sql_connection, sqlite_db, sqlite_clean_db): self.sql_connection = sql_connection self.sqlite_db = sqlite_db self.sqlite_clean_db = sqlite_clean_db - self.engine = db_session.get_engine() + self.engine = db_api.get_engine() self.engine.dispose() conn = self.engine.connect() if sql_connection == "sqlite://": @@ -167,9 +168,9 @@ global _DB_CACHE if not _DB_CACHE: - _DB_CACHE = Database(session, migration, + _DB_CACHE = Database(sqla_api, migration, sql_connection=CONF.database.connection, - sqlite_db=CONF.sqlite_db, + sqlite_db=CONF.database.sqlite_db, sqlite_clean_db=CONF.sqlite_clean_db) self.useFixture(_DB_CACHE) diff -Nru ironic-2014.1~b3/ironic/tests/conductor/test_conductor_utils.py ironic-2014.1~rc1/ironic/tests/conductor/test_conductor_utils.py --- ironic-2014.1~b3/ironic/tests/conductor/test_conductor_utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/conductor/test_conductor_utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -25,6 +25,47 @@ from ironic.tests.db import utils +class NodeSetBootDeviceTestCase(base.DbTestCase): + def setUp(self): + super(NodeSetBootDeviceTestCase, self).setUp() + self.context = context.get_admin_context() + self.dbapi = dbapi.get_instance() + + def test_node_set_boot_device_non_existent_device(self): + mgr_utils.mock_the_extension_manager(driver="fake_ipmitool") + self.driver = driver_factory.get_driver("fake_ipmitool") + ndict = utils.get_test_node(uuid=cmn_utils.generate_uuid(), + driver='fake_ipmitool') + node = self.dbapi.create_node(ndict) + task = task_manager.TaskManager(self.context, node.uuid) + self.assertRaises(exception.InvalidParameterValue, + conductor_utils.node_set_boot_device, + task, + task.node, + device='fake') + + def test_node_set_boot_device_valid(self): + mgr_utils.mock_the_extension_manager(driver="fake_ipmitool") + self.driver = driver_factory.get_driver("fake_ipmitool") + ipmi_info = utils.get_test_ipmi_info() + ndict = utils.get_test_node(uuid=cmn_utils.generate_uuid(), + driver='fake_ipmitool', + driver_info=ipmi_info) + node = self.dbapi.create_node(ndict) + task = task_manager.TaskManager(self.context, node.uuid) + + with mock.patch.object(self.driver.vendor, + 'vendor_passthru') as driver_vpassthru: + conductor_utils.node_set_boot_device(task, + task.node, + device='pxe') + driver_vpassthru.assert_called_once_with(task, + task.node, + device='pxe', + persistent=False, + method='set_boot_device') + + class NodePowerActionTestCase(base.DbTestCase): def setUp(self): diff -Nru ironic-2014.1~b3/ironic/tests/conductor/test_manager.py ironic-2014.1~rc1/ironic/tests/conductor/test_manager.py --- ironic-2014.1~b3/ironic/tests/conductor/test_manager.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/conductor/test_manager.py 2014-04-01 19:49:34.000000000 +0000 @@ -35,6 +35,7 @@ from ironic.db import api as dbapi from ironic import objects from ironic.openstack.common import context +from ironic.openstack.common.rpc import common as messaging from ironic.openstack.common import timeutils from ironic.tests.conductor import utils as mgr_utils from ironic.tests.db import base @@ -47,7 +48,8 @@ def setUp(self): super(ManagerTestCase, self).setUp() - self.service = manager.ConductorManager('test-host', 'test-topic') + self.hostname = 'test-host' + self.service = manager.ConductorManager(self.hostname, 'test-topic') self.context = context.get_admin_context() self.dbapi = dbapi.get_instance() mgr_utils.mock_the_extension_manager() @@ -56,10 +58,19 @@ def test_start_registers_conductor(self): self.assertRaises(exception.ConductorNotFound, self.dbapi.get_conductor, - 'test-host') + self.hostname) self.service.start() - res = self.dbapi.get_conductor('test-host') - self.assertEqual('test-host', res['hostname']) + res = self.dbapi.get_conductor(self.hostname) + self.assertEqual(self.hostname, res['hostname']) + + def test_stop_unregisters_conductor(self): + self.service.start() + res = self.dbapi.get_conductor(self.hostname) + self.assertEqual(self.hostname, res['hostname']) + self.service.stop() + self.assertRaises(exception.ConductorNotFound, + self.dbapi.get_conductor, + self.hostname) def test_start_registers_driver_names(self): init_names = ['fake1', 'fake2'] @@ -70,20 +81,20 @@ # verify driver names are registered mock_names.return_value = init_names self.service.start() - res = self.dbapi.get_conductor('test-host') + res = self.dbapi.get_conductor(self.hostname) self.assertEqual(init_names, res['drivers']) # verify that restart registers new driver names mock_names.return_value = restart_names self.service.start() - res = self.dbapi.get_conductor('test-host') + res = self.dbapi.get_conductor(self.hostname) self.assertEqual(restart_names, res['drivers']) def test__conductor_service_record_keepalive(self): self.service.start() with mock.patch.object(self.dbapi, 'touch_conductor') as mock_touch: self.service._conductor_service_record_keepalive(self.context) - mock_touch.assert_called_once_with('test-host') + mock_touch.assert_called_once_with(self.hostname) def test__sync_power_state_no_sync(self): self.service.start() @@ -139,6 +150,35 @@ @mock.patch.object(conductor_utils, 'node_power_action') @mock.patch.object(objects.node.Node, 'save') + def test__sync_power_state_max_retries_exceeded(self, save_mock, npa_mock): + """Force sync node power state and check if max retry + limit for force sync is honoured + """ + self.service.start() + self.config(force_power_state_during_sync=True, group='conductor') + self.config(power_state_sync_max_retries=1, group='conductor') + n = utils.get_test_node(driver='fake', power_state=states.POWER_ON) + self.dbapi.create_node(n) + with mock.patch.object(self.driver.power, + 'get_power_state') as get_power_mock: + get_power_mock.return_value = states.POWER_OFF + self.service._sync_power_states(self.context) + self.assertEqual(1, get_power_mock.call_count) + npa_mock.assert_called_once_with(mock.ANY, mock.ANY, + states.POWER_ON) + self.assertEqual(0, save_mock.call_count) + + npa_mock.reset_mock() + save_mock.reset_mock() + get_power_mock.reset_mock() + # This try wont succeed + self.service._sync_power_states(self.context) + self.assertEqual(0, npa_mock.call_count) + self.assertEqual(1, get_power_mock.call_count) + self.assertEqual(1, save_mock.call_count) + + @mock.patch.object(conductor_utils, 'node_power_action') + @mock.patch.object(objects.node.Node, 'save') def test__sync_power_state_changed_failed(self, save_mock, npa_mock): self.service.start() self.config(force_power_state_during_sync=True, group='conductor') @@ -300,11 +340,14 @@ db_node = self.dbapi.create_node(n) self.service.start() - self.assertRaises(exception.NodeLocked, - self.service.change_node_power_state, - self.context, - db_node.uuid, - states.POWER_ON) + exc = self.assertRaises(messaging.ClientException, + self.service.change_node_power_state, + self.context, + db_node.uuid, + states.POWER_ON) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeLocked) + # In this test worker should not be spawned, but waiting to make sure # the below perform_mock assertion is valid. self.service._worker_pool.waitall() @@ -327,11 +370,13 @@ as spawn_mock: spawn_mock.side_effect = exception.NoFreeConductorWorker() - self.assertRaises(exception.NoFreeConductorWorker, - self.service.change_node_power_state, - self.context, - db_node.uuid, - states.POWER_ON) + exc = self.assertRaises(messaging.ClientException, + self.service.change_node_power_state, + self.context, + db_node.uuid, + states.POWER_ON) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NoFreeConductorWorker) spawn_mock.assert_called_once_with(mock.ANY, mock.ANY, mock.ANY, mock.ANY) @@ -395,10 +440,12 @@ # check that it fails if something else has locked it already with task_manager.acquire(self.context, node['id'], shared=False): node['extra'] = {'test': 'two'} - self.assertRaises(exception.NodeLocked, - self.service.update_node, - self.context, - node) + exc = self.assertRaises(messaging.ClientException, + self.service.update_node, + self.context, + node) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeLocked) # verify change did not happen res = objects.Node.get_by_uuid(self.context, node['uuid']) @@ -413,10 +460,12 @@ # check that it fails because state is POWER_ON node['instance_uuid'] = 'fake-uuid' - self.assertRaises(exception.NodeInWrongPowerState, - self.service.update_node, - self.context, - node) + exc = self.assertRaises(messaging.ClientException, + self.service.update_node, + self.context, + node) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeInWrongPowerState) # verify change did not happen res = objects.Node.get_by_uuid(self.context, node['uuid']) @@ -459,177 +508,335 @@ res = objects.Node.get_by_uuid(self.context, node['uuid']) self.assertEqual(existing_driver, res['driver']) - def test_vendor_action(self): + def test_vendor_passthru_success(self): n = utils.get_test_node(driver='fake') - self.dbapi.create_node(n) + node = self.dbapi.create_node(n) info = {'bar': 'baz'} - self.service.do_vendor_action( - self.context, n['uuid'], 'first_method', info) + self.service.start() - def test_validate_vendor_action(self): - n = utils.get_test_node(driver='fake') + self.service.vendor_passthru( + self.context, n['uuid'], 'first_method', info) + # Waiting to make sure the below assertions are valid. + self.service._worker_pool.waitall() + + node.refresh(self.context) + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) + + def test_vendor_passthru_node_already_locked(self): + fake_reservation = 'test_reserv' + n = utils.get_test_node(driver='fake', reservation=fake_reservation) node = self.dbapi.create_node(n) info = {'bar': 'baz'} - self.service.validate_vendor_action( - self.context, n['uuid'], 'first_method', info) + self.service.start() + + exc = self.assertRaises(messaging.ClientException, + self.service.vendor_passthru, + self.context, n['uuid'], 'first_method', info) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeLocked) + node.refresh(self.context) self.assertIsNone(node.last_error) + # Verify the existing reservation is not broken. + self.assertEqual(fake_reservation, node.reservation) - def test_validate_vendor_action_unsupported_method(self): + def test_vendor_passthru_unsupported_method(self): n = utils.get_test_node(driver='fake') node = self.dbapi.create_node(n) info = {'bar': 'baz'} - self.assertRaises(exception.InvalidParameterValue, - self.service.validate_vendor_action, - self.context, n['uuid'], 'abc', info) + self.service.start() + + exc = self.assertRaises(messaging.ClientException, + self.service.vendor_passthru, + self.context, + n['uuid'], 'unsupported_method', info) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], + exception.UnsupportedDriverExtension) + node.refresh(self.context) - self.assertIsNotNone(node.last_error) + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) - def test_validate_vendor_action_no_parameter(self): + def test_vendor_passthru_invalid_method_parameters(self): n = utils.get_test_node(driver='fake') node = self.dbapi.create_node(n) - info = {'fake': 'baz'} - self.assertRaises(exception.InvalidParameterValue, - self.service.validate_vendor_action, - self.context, n['uuid'], 'first_method', info) + info = {'invalid_param': 'whatever'} + self.service.start() + + exc = self.assertRaises(messaging.ClientException, + self.service.vendor_passthru, + self.context, n['uuid'], 'first_method', info) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InvalidParameterValue) + node.refresh(self.context) - self.assertIsNotNone(node.last_error) + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) - def test_validate_vendor_action_unsupported(self): + def test_vendor_passthru_vendor_interface_not_supported(self): n = utils.get_test_node(driver='fake') node = self.dbapi.create_node(n) info = {'bar': 'baz'} self.driver.vendor = None - self.assertRaises(exception.UnsupportedDriverExtension, - self.service.validate_vendor_action, - self.context, n['uuid'], 'foo', info) + self.service.start() + + exc = self.assertRaises(messaging.ClientException, + self.service.vendor_passthru, + self.context, + n['uuid'], 'whatever_method', info) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], + exception.UnsupportedDriverExtension) + node.refresh(self.context) - self.assertIsNotNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) + + def test_vendor_passthru_worker_pool_full(self): + n = utils.get_test_node(driver='fake') + node = self.dbapi.create_node(n) + info = {'bar': 'baz'} + self.service.start() + + with mock.patch.object(self.service, '_spawn_worker') \ + as spawn_mock: + spawn_mock.side_effect = exception.NoFreeConductorWorker() + + exc = self.assertRaises(messaging.ClientException, + self.service.vendor_passthru, + self.context, + n['uuid'], 'first_method', info) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NoFreeConductorWorker) + + # Waiting to make sure the below assertions are valid. + self.service._worker_pool.waitall() + + node.refresh(self.context) + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) def test_do_node_deploy_invalid_state(self): # test node['provision_state'] is not NOSTATE ndict = utils.get_test_node(driver='fake', provision_state=states.ACTIVE) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.InstanceDeployFailure, - self.service.do_node_deploy, - self.context, node['uuid']) + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_deploy, + self.context, node['uuid']) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InstanceDeployFailure) + # This is a sync operation last_error should be None. + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) def test_do_node_deploy_maintenance(self): ndict = utils.get_test_node(driver='fake', maintenance=True) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeInMaintenance, - self.service.do_node_deploy, - self.context, node['uuid']) + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_deploy, + self.context, node['uuid']) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeInMaintenance) + # This is a sync operation last_error should be None. + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) + + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.validate') + def test_do_node_deploy_validate_fail(self, mock_validate): + # InvalidParameterValue should be re-raised as InstanceDeployFailure + mock_validate.side_effect = exception.InvalidParameterValue('error') + ndict = utils.get_test_node(driver='fake') + node = self.dbapi.create_node(ndict) + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_deploy, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InstanceDeployFailure) + # This is a sync operation last_error should be None. + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) - def test_do_node_deploy_driver_raises_error(self): + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.deploy') + def test__do_node_deploy_driver_raises_error(self, mock_deploy): # test when driver.deploy.deploy raises an exception + mock_deploy.side_effect = exception.InstanceDeployFailure('test') ndict = utils.get_test_node(driver='fake', provision_state=states.NOSTATE) node = self.dbapi.create_node(ndict) + task = task_manager.TaskManager(self.context, node.uuid) - with mock.patch('ironic.drivers.modules.fake.FakeDeploy.deploy') \ - as deploy: - deploy.side_effect = exception.InstanceDeployFailure('test') - self.assertRaises(exception.InstanceDeployFailure, - self.service.do_node_deploy, - self.context, node['uuid']) - node.refresh(self.context) - self.assertEqual(states.DEPLOYFAIL, node['provision_state']) - self.assertEqual(states.NOSTATE, node['target_provision_state']) - self.assertIsNotNone(node['last_error']) - deploy.assert_called_once_with(mock.ANY, mock.ANY) + self.assertRaises(exception.InstanceDeployFailure, + self.service._do_node_deploy, + self.context, task) + node.refresh(self.context) + self.assertEqual(node.provision_state, states.DEPLOYFAIL) + self.assertEqual(node.target_provision_state, states.NOSTATE) + self.assertIsNotNone(node.last_error) + mock_deploy.assert_called_once_with(mock.ANY, mock.ANY) - def test_do_node_deploy_ok(self): + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.deploy') + def test__do_node_deploy_ok(self, mock_deploy): # test when driver.deploy.deploy returns DEPLOYDONE + mock_deploy.return_value = states.DEPLOYDONE ndict = utils.get_test_node(driver='fake', provision_state=states.NOSTATE) node = self.dbapi.create_node(ndict) + task = task_manager.TaskManager(self.context, node.uuid) - with mock.patch('ironic.drivers.modules.fake.FakeDeploy.deploy') \ - as deploy: - deploy.return_value = states.DEPLOYDONE - self.service.do_node_deploy(self.context, node['uuid']) - node.refresh(self.context) - self.assertEqual(states.ACTIVE, node['provision_state']) - self.assertEqual(states.NOSTATE, node['target_provision_state']) - self.assertIsNone(node['last_error']) - deploy.assert_called_once_with(mock.ANY, mock.ANY) + self.service._do_node_deploy(self.context, task) + node.refresh(self.context) + self.assertEqual(node.provision_state, states.ACTIVE) + self.assertEqual(node.target_provision_state, states.NOSTATE) + self.assertIsNone(node.last_error) + mock_deploy.assert_called_once_with(mock.ANY, mock.ANY) def test_do_node_deploy_partial_ok(self): - # test when driver.deploy.deploy doesn't return DEPLOYDONE - ndict = utils.get_test_node(driver='fake', - provision_state=states.NOSTATE) + self.service.start() + thread = self.service._spawn_worker(lambda: None) + with mock.patch.object(self.service, '_spawn_worker') as mock_spawn: + mock_spawn.return_value = thread + + ndict = utils.get_test_node(driver='fake', + provision_state=states.NOSTATE) + node = self.dbapi.create_node(ndict) + + self.service.do_node_deploy(self.context, node.uuid) + self.service._worker_pool.waitall() + node.refresh(self.context) + self.assertEqual(node.provision_state, states.DEPLOYING) + self.assertEqual(node.target_provision_state, states.DEPLOYDONE) + # This is a sync operation last_error should be None. + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) + mock_spawn.assert_called_once_with(mock.ANY, mock.ANY, mock.ANY) + + def test_do_node_deploy_worker_pool_full(self): + ndict = utils.get_test_node(driver='fake') node = self.dbapi.create_node(ndict) + self.service.start() - with mock.patch('ironic.drivers.modules.fake.FakeDeploy.deploy') \ - as deploy: - deploy.return_value = states.DEPLOYING - self.service.do_node_deploy(self.context, node['uuid']) + with mock.patch.object(self.service, '_spawn_worker') as mock_spawn: + mock_spawn.side_effect = exception.NoFreeConductorWorker() + + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_deploy, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NoFreeConductorWorker) + self.service._worker_pool.waitall() node.refresh(self.context) - self.assertEqual(states.DEPLOYING, node['provision_state']) - self.assertEqual(states.DEPLOYDONE, node['target_provision_state']) - self.assertIsNone(node['last_error']) - deploy.assert_called_once_with(mock.ANY, mock.ANY) + # This is a sync operation last_error should be None. + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) def test_do_node_tear_down_invalid_state(self): - # test node['provision_state'] is incorrect for tear_down + # test node.provision_state is incorrect for tear_down ndict = utils.get_test_node(driver='fake', provision_state=states.NOSTATE) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.InstanceDeployFailure, - self.service.do_node_tear_down, - self.context, node['uuid']) + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_tear_down, + self.context, node['uuid']) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InstanceDeployFailure) + + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.validate') + def test_do_node_tear_down_validate_fail(self, mock_validate): + # InvalidParameterValue should be re-raised as InstanceDeployFailure + mock_validate.side_effect = exception.InvalidParameterValue('error') + ndict = utils.get_test_node(driver='fake') + ndict['provision_state'] = states.ACTIVE + node = self.dbapi.create_node(ndict) + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_tear_down, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InstanceDeployFailure) - def test_do_node_tear_down_driver_raises_error(self): + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.tear_down') + def test_do_node_tear_down_driver_raises_error(self, mock_tear_down): # test when driver.deploy.tear_down raises exception ndict = utils.get_test_node(driver='fake', provision_state=states.ACTIVE) node = self.dbapi.create_node(ndict) - with mock.patch('ironic.drivers.modules.fake.FakeDeploy.tear_down') \ - as deploy: - deploy.side_effect = exception.InstanceDeployFailure('test') - self.assertRaises(exception.InstanceDeployFailure, - self.service.do_node_tear_down, - self.context, node['uuid']) - node.refresh(self.context) - self.assertEqual(states.ERROR, node['provision_state']) - self.assertEqual(states.NOSTATE, node['target_provision_state']) - self.assertIsNotNone(node['last_error']) - deploy.assert_called_once_with(mock.ANY, mock.ANY) + task = task_manager.TaskManager(self.context, node.uuid) + self.service.start() + mock_tear_down.side_effect = exception.InstanceDeployFailure('test') + self.assertRaises(exception.InstanceDeployFailure, + self.service._do_node_tear_down, + self.context, task) + node.refresh(self.context) + self.assertEqual(states.ERROR, node.provision_state) + self.assertEqual(states.NOSTATE, node.target_provision_state) + self.assertIsNotNone(node.last_error) + mock_tear_down.assert_called_once_with(mock.ANY, mock.ANY) - def test_do_node_tear_down_ok(self): + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.tear_down') + def test_do_node_tear_down_ok(self, mock_tear_down): # test when driver.deploy.tear_down returns DELETED ndict = utils.get_test_node(driver='fake', provision_state=states.ACTIVE) node = self.dbapi.create_node(ndict) - with mock.patch('ironic.drivers.modules.fake.FakeDeploy.tear_down') \ - as deploy: - deploy.return_value = states.DELETED - self.service.do_node_tear_down(self.context, node['uuid']) - node.refresh(self.context) - self.assertEqual(states.NOSTATE, node['provision_state']) - self.assertEqual(states.NOSTATE, node['target_provision_state']) - self.assertIsNone(node['last_error']) - deploy.assert_called_once_with(mock.ANY, mock.ANY) + task = task_manager.TaskManager(self.context, node.uuid) + self.service.start() + mock_tear_down.return_value = states.DELETED + self.service._do_node_tear_down(self.context, task) + node.refresh(self.context) + self.assertEqual(states.NOSTATE, node.provision_state) + self.assertEqual(states.NOSTATE, node.target_provision_state) + self.assertIsNone(node.last_error) + mock_tear_down.assert_called_once_with(mock.ANY, mock.ANY) - def test_do_node_tear_down_partial_ok(self): + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.tear_down') + def test_do_node_tear_down_partial_ok(self, mock_tear_down): # test when driver.deploy.tear_down doesn't return DELETED ndict = utils.get_test_node(driver='fake', provision_state=states.ACTIVE) node = self.dbapi.create_node(ndict) - with mock.patch('ironic.drivers.modules.fake.FakeDeploy.tear_down') \ - as deploy: - deploy.return_value = states.DELETING - self.service.do_node_tear_down(self.context, node['uuid']) - node.refresh(self.context) - self.assertEqual(node['provision_state'], states.DELETING) - self.assertEqual(states.DELETED, node['target_provision_state']) - self.assertIsNone(node['last_error']) - deploy.assert_called_once_with(mock.ANY, mock.ANY) + self.service.start() + task = task_manager.TaskManager(self.context, node.uuid) + mock_tear_down.return_value = states.DELETING + self.service._do_node_tear_down(self.context, task) + node.refresh(self.context) + self.assertEqual(states.DELETING, node.provision_state) + self.assertIsNone(node.last_error) + mock_tear_down.assert_called_once_with(mock.ANY, mock.ANY) + + @mock.patch('ironic.conductor.manager.ConductorManager._spawn_worker') + def test_do_node_tear_down_worker_pool_full(self, mock_spawn): + ndict = utils.get_test_node(driver='fake', + provision_state=states.ACTIVE) + node = self.dbapi.create_node(ndict) + self.service.start() + + mock_spawn.side_effect = exception.NoFreeConductorWorker() + + exc = self.assertRaises(messaging.ClientException, + self.service.do_node_tear_down, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NoFreeConductorWorker) + self.service._worker_pool.waitall() + node.refresh(self.context) + # This is a sync operation last_error should be None. + self.assertIsNone(node.last_error) + # Verify reservation has been cleared. + self.assertIsNone(node.reservation) def test_validate_driver_interfaces(self): ndict = utils.get_test_node(driver='fake') @@ -637,7 +844,6 @@ ret = self.service.validate_driver_interfaces(self.context, node['uuid']) expected = {'console': {'result': True}, - 'rescue': {'result': None, 'reason': 'not supported'}, 'power': {'result': True}, 'deploy': {'result': True}} self.assertEqual(expected, ret) @@ -675,18 +881,22 @@ ndict = utils.get_test_node(driver='fake', maintenance=True) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeMaintenanceFailure, - self.service.change_node_maintenance_mode, - self.context, node.uuid, True) + exc = self.assertRaises(messaging.ClientException, + self.service.change_node_maintenance_mode, + self.context, node.uuid, True) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeMaintenanceFailure) node.refresh(self.context) self.assertTrue(node.maintenance) def test_maintenance_mode_off_failed(self): ndict = utils.get_test_node(driver='fake') node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeMaintenanceFailure, - self.service.change_node_maintenance_mode, - self.context, node.uuid, False) + exc = self.assertRaises(messaging.ClientException, + self.service.change_node_maintenance_mode, + self.context, node.uuid, False) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeMaintenanceFailure) node.refresh(self.context) self.assertFalse(node.maintenance) @@ -773,8 +983,11 @@ ndict = utils.get_test_node(reservation=fake_reservation) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeLocked, self.service.destroy_node, - self.context, node.uuid) + exc = self.assertRaises(messaging.ClientException, + self.service.destroy_node, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeLocked) # Verify existing reservation wasn't broken. node.refresh(self.context) self.assertEqual(fake_reservation, node.reservation) @@ -784,8 +997,12 @@ ndict = utils.get_test_node(instance_uuid='fake-uuid') node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeAssociated, self.service.destroy_node, - self.context, node.uuid) + exc = self.assertRaises(messaging.ClientException, + self.service.destroy_node, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeAssociated) + # Verify reservation was released. node.refresh(self.context) self.assertIsNone(node.reservation) @@ -861,52 +1078,78 @@ self.assertIn(error, node.last_error) self.assertIsNone(node.reservation) + def test_set_console_mode_worker_pool_full(self): + ndict = utils.get_test_node(driver='fake') + node = self.dbapi.create_node(ndict) + self.service.start() + with mock.patch.object(self.service, '_spawn_worker') \ + as spawn_mock: + spawn_mock.side_effect = exception.NoFreeConductorWorker() + + exc = self.assertRaises(messaging.ClientException, + self.service.set_console_mode, + self.context, node.uuid, True) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NoFreeConductorWorker) + self.service._worker_pool.waitall() + spawn_mock.assert_called_once_with(mock.ANY, mock.ANY, mock.ANY) + def test_set_console_mode_enabled(self): ndict = utils.get_test_node(driver='fake') node = self.dbapi.create_node(ndict) + self.service.start() self.service.set_console_mode(self.context, node.uuid, True) + self.service._worker_pool.waitall() node.refresh(self.context) self.assertTrue(node.console_enabled) def test_set_console_mode_disabled(self): ndict = utils.get_test_node(driver='fake') node = self.dbapi.create_node(ndict) + self.service.start() self.service.set_console_mode(self.context, node.uuid, False) + self.service._worker_pool.waitall() node.refresh(self.context) self.assertFalse(node.console_enabled) def test_set_console_mode_not_supported(self): ndict = utils.get_test_node(driver='fake', last_error=None) node = self.dbapi.create_node(ndict) + self.service.start() # null the console interface self.driver.console = None - self.assertRaises(exception.UnsupportedDriverExtension, - self.service.set_console_mode, self.context, - node.uuid, True) + exc = self.assertRaises(messaging.ClientException, + self.service.set_console_mode, self.context, + node.uuid, True) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], + exception.UnsupportedDriverExtension) + self.service._worker_pool.waitall() node.refresh(self.context) self.assertIsNotNone(node.last_error) def test_set_console_mode_validation_fail(self): ndict = utils.get_test_node(driver='fake', last_error=None) node = self.dbapi.create_node(ndict) + self.service.start() with mock.patch.object(self.driver.console, 'validate') as mock_val: mock_val.side_effect = exception.InvalidParameterValue('error') - self.assertRaises(exception.InvalidParameterValue, - self.service.set_console_mode, self.context, - node.uuid, True) - node.refresh(self.context) - self.assertIsNotNone(node.last_error) + exc = self.assertRaises(messaging.ClientException, + self.service.set_console_mode, + self.context, node.uuid, True) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InvalidParameterValue) def test_set_console_mode_start_fail(self): ndict = utils.get_test_node(driver='fake', last_error=None, console_enabled=False) node = self.dbapi.create_node(ndict) + self.service.start() with mock.patch.object(self.driver.console, 'start_console') \ as mock_sc: mock_sc.side_effect = exception.IronicException('test-error') - self.assertRaises(exception.IronicException, - self.service.set_console_mode, self.context, - node.uuid, True) + self.service.set_console_mode(self.context, node.uuid, True) + self.service._worker_pool.waitall() mock_sc.assert_called_once_with(mock.ANY, mock.ANY) node.refresh(self.context) self.assertIsNotNone(node.last_error) @@ -915,12 +1158,12 @@ ndict = utils.get_test_node(driver='fake', last_error=None, console_enabled=True) node = self.dbapi.create_node(ndict) + self.service.start() with mock.patch.object(self.driver.console, 'stop_console') \ as mock_sc: mock_sc.side_effect = exception.IronicException('test-error') - self.assertRaises(exception.IronicException, - self.service.set_console_mode, self.context, - node.uuid, False) + self.service.set_console_mode(self.context, node.uuid, False) + self.service._worker_pool.waitall() mock_sc.assert_called_once_with(mock.ANY, mock.ANY) node.refresh(self.context) self.assertIsNotNone(node.last_error) @@ -928,17 +1171,21 @@ def test_enable_console_already_enabled(self): ndict = utils.get_test_node(driver='fake', console_enabled=True) node = self.dbapi.create_node(ndict) + self.service.start() with mock.patch.object(self.driver.console, 'start_console') \ as mock_sc: self.service.set_console_mode(self.context, node.uuid, True) + self.service._worker_pool.waitall() self.assertFalse(mock_sc.called) def test_disable_console_already_disabled(self): ndict = utils.get_test_node(driver='fake', console_enabled=False) node = self.dbapi.create_node(ndict) + self.service.start() with mock.patch.object(self.driver.console, 'stop_console') \ as mock_sc: self.service.set_console_mode(self.context, node.uuid, False) + self.service._worker_pool.waitall() self.assertFalse(mock_sc.called) def test_get_console(self): @@ -956,33 +1203,43 @@ node = self.dbapi.create_node(ndict) # null the console interface self.driver.console = None - self.assertRaises(exception.UnsupportedDriverExtension, + exc = self.assertRaises(messaging.ClientException, self.service.get_console_information, self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], + exception.UnsupportedDriverExtension) def test_get_console_disabled(self): ndict = utils.get_test_node(driver='fake', console_enabled=False) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeConsoleNotEnabled, - self.service.get_console_information, - self.context, node.uuid) + exc = self.assertRaises(messaging.ClientException, + self.service.get_console_information, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeConsoleNotEnabled) def test_get_console_validate_fail(self): ndict = utils.get_test_node(driver='fake', console_enabled=True) node = self.dbapi.create_node(ndict) with mock.patch.object(self.driver.console, 'validate') as mock_gc: mock_gc.side_effect = exception.InvalidParameterValue('error') - self.assertRaises(exception.InvalidParameterValue, - self.service.get_console_information, - self.context, node.uuid) + exc = self.assertRaises(messaging.ClientException, + self.service.get_console_information, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.InvalidParameterValue) def test_destroy_node_power_on(self): self.service.start() ndict = utils.get_test_node(power_state=states.POWER_ON) node = self.dbapi.create_node(ndict) - self.assertRaises(exception.NodeInWrongPowerState, - self.service.destroy_node, self.context, node.uuid) + exc = self.assertRaises(messaging.ClientException, + self.service.destroy_node, + self.context, node.uuid) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeInWrongPowerState) # Verify reservation was released. node.refresh(self.context) self.assertIsNone(node.reservation) @@ -992,3 +1249,72 @@ ndict = utils.get_test_node(power_state=states.POWER_OFF) node = self.dbapi.create_node(ndict) self.service.destroy_node(self.context, node.uuid) + + def test_update_port(self): + ndict = utils.get_test_node(driver='fake') + self.dbapi.create_node(ndict) + + pdict = utils.get_test_port(extra={'foo': 'bar'}) + port = self.dbapi.create_port(pdict) + new_extra = {'foo': 'baz'} + port.extra = new_extra + res = self.service.update_port(self.context, port) + self.assertEqual(new_extra, res.extra) + + def test_update_port_node_locked(self): + ndict = utils.get_test_node(driver='fake', reservation='fake-reserv') + self.dbapi.create_node(ndict) + + pdict = utils.get_test_port() + port = self.dbapi.create_port(pdict) + port.extra = {'foo': 'baz'} + exc = self.assertRaises(messaging.ClientException, + self.service.update_port, + self.context, port) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.NodeLocked) + + @mock.patch('ironic.common.neutron.NeutronAPI.update_port_address') + def test_update_port_address(self, mac_update_mock): + ndict = utils.get_test_node(driver='fake') + self.dbapi.create_node(ndict) + + pdict = utils.get_test_port(extra={'vif_port_id': 'fake-id'}) + port = self.dbapi.create_port(pdict) + new_address = '11:22:33:44:55:bb' + port.address = new_address + res = self.service.update_port(self.context, port) + self.assertEqual(new_address, res.address) + mac_update_mock.assert_called_once_with('fake-id', new_address) + + @mock.patch('ironic.common.neutron.NeutronAPI.update_port_address') + def test_update_port_address_fail(self, mac_update_mock): + ndict = utils.get_test_node(driver='fake') + self.dbapi.create_node(ndict) + + pdict = utils.get_test_port(extra={'vif_port_id': 'fake-id'}) + port = self.dbapi.create_port(pdict) + old_address = port.address + port.address = '11:22:33:44:55:bb' + mac_update_mock.side_effect = exception.FailedToUpdateMacOnPort( + port_id=port.uuid) + exc = self.assertRaises(messaging.ClientException, + self.service.update_port, + self.context, port) + # Compare true exception hidden by @messaging.client_exceptions + self.assertEqual(exc._exc_info[0], exception.FailedToUpdateMacOnPort) + port.refresh(self.context) + self.assertEqual(old_address, port.address) + + @mock.patch('ironic.common.neutron.NeutronAPI.update_port_address') + def test_update_port_address_no_vif_id(self, mac_update_mock): + ndict = utils.get_test_node(driver='fake') + self.dbapi.create_node(ndict) + + pdict = utils.get_test_port() + port = self.dbapi.create_port(pdict) + new_address = '11:22:33:44:55:bb' + port.address = new_address + res = self.service.update_port(self.context, port) + self.assertEqual(new_address, res.address) + self.assertFalse(mac_update_mock.called) diff -Nru ironic-2014.1~b3/ironic/tests/conductor/test_rpcapi.py ironic-2014.1~rc1/ironic/tests/conductor/test_rpcapi.py --- ironic-2014.1~b3/ironic/tests/conductor/test_rpcapi.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/conductor/test_rpcapi.py 2014-04-01 19:49:34.000000000 +0000 @@ -28,7 +28,6 @@ from ironic.db import api as dbapi from ironic import objects from ironic.openstack.common import context -from ironic.openstack.common import jsonutils as json from ironic.tests.db import base from ironic.tests.db import utils as dbutils @@ -41,8 +40,7 @@ super(RPCAPITestCase, self).setUp() self.context = context.get_admin_context() self.dbapi = dbapi.get_instance() - self.fake_node = json.to_primitive(dbutils.get_test_node( - driver='fake-driver')) + self.fake_node = dbutils.get_test_node(driver='fake-driver') self.fake_node_obj = objects.Node._from_db_object( objects.Node(), self.fake_node) @@ -117,27 +115,20 @@ new_state=states.POWER_ON) def test_pass_vendor_info(self): - ctxt = context.get_admin_context() - rpcapi = conductor_rpcapi.ConductorAPI(topic='fake-topic') - expected_retval = 'hello world' - - def _fake_rpc_method(*args, **kwargs): - return expected_retval - - self.useFixture(fixtures.MonkeyPatch( - 'ironic.openstack.common.rpc.call', _fake_rpc_method)) - retval = rpcapi.vendor_passthru(ctxt, node_id=self.fake_node['uuid'], - driver_method='foo', info={'bar': 'baz'}) - self.assertEqual(expected_retval, retval) + self._test_rpcapi('vendor_passthru', + 'call', + node_id=self.fake_node['uuid'], + driver_method='test-driver-method', + info={"test_info": "test_value"}) def test_do_node_deploy(self): self._test_rpcapi('do_node_deploy', - 'cast', + 'call', node_id=self.fake_node['uuid']) def test_do_node_tear_down(self): self._test_rpcapi('do_node_tear_down', - 'cast', + 'call', node_id=self.fake_node['uuid']) def test_validate_driver_interfaces(self): @@ -163,6 +154,12 @@ def test_set_console_mode(self): self._test_rpcapi('set_console_mode', - 'cast', + 'call', node_id=self.fake_node['uuid'], enabled=True) + + def test_update_port(self): + fake_port = dbutils.get_test_port() + self._test_rpcapi('update_port', + 'call', + port_obj=fake_port) diff -Nru ironic-2014.1~b3/ironic/tests/conf_fixture.py ironic-2014.1~rc1/ironic/tests/conf_fixture.py --- ironic-2014.1~b3/ironic/tests/conf_fixture.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/conf_fixture.py 2014-04-01 19:49:34.000000000 +0000 @@ -39,7 +39,7 @@ self.conf.set_default('rpc_cast_timeout', 5) self.conf.set_default('rpc_response_timeout', 5) self.conf.set_default('connection', "sqlite://", group='database') - self.conf.set_default('sqlite_synchronous', False) + self.conf.set_default('sqlite_synchronous', False, group='database') self.conf.set_default('use_ipv6', True) self.conf.set_default('verbose', True) config.parse_args([], default_config_files=[]) diff -Nru ironic-2014.1~b3/ironic/tests/db/sqlalchemy/test_migrations.py ironic-2014.1~rc1/ironic/tests/db/sqlalchemy/test_migrations.py --- ironic-2014.1~b3/ironic/tests/db/sqlalchemy/test_migrations.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/db/sqlalchemy/test_migrations.py 2014-04-01 19:49:34.000000000 +0000 @@ -50,8 +50,8 @@ import sqlalchemy import sqlalchemy.exc +from ironic.db.sqlalchemy import api as sqla_api from ironic.db.sqlalchemy import migration -from ironic.openstack.common.db.sqlalchemy import session from ironic.openstack.common.db.sqlalchemy import utils as db_utils from ironic.openstack.common import lockutils from ironic.openstack.common import log as logging @@ -123,14 +123,10 @@ @contextlib.contextmanager def patch_with_engine(engine): - with mock.patch(('ironic.openstack.common.db' - '.sqlalchemy.session.get_engine')) as patch_migration: - with mock.patch(('ironic.db.sqlalchemy.migration' - '.db_session.get_engine')) as patch_env: - patch_migration.return_value = engine - patch_env.return_value = engine - - yield + with mock.patch(('ironic.db' + '.sqlalchemy.api.get_engine')) as patch_migration: + patch_migration.return_value = engine + yield class BaseMigrationTestCase(base.TestCase): @@ -169,7 +165,7 @@ self.engines = {} for key, value in self.test_databases.items(): - self.engines[key] = session.create_engine(value) + self.engines[key] = sqla_api.create_engine(value) # We start each test case with a completely blank slate. self.temp_dir = self.useFixture(fixtures.TempDir()) diff -Nru ironic-2014.1~b3/ironic/tests/db/test_nodes.py ironic-2014.1~rc1/ironic/tests/db/test_nodes.py --- ironic-2014.1~b3/ironic/tests/db/test_nodes.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/db/test_nodes.py 2014-04-01 19:49:34.000000000 +0000 @@ -101,7 +101,7 @@ n = utils.get_test_node(id=i, uuid=ironic_utils.generate_uuid()) self.dbapi.create_node(n) res = [i[0] for i in self.dbapi.get_nodeinfo_list()] - self.assertEqual(sorted(res), sorted(xrange(1, 6))) + self.assertEqual(sorted(res), sorted(range(1, 6))) def test_get_nodeinfo_list_with_cols(self): uuids = {} diff -Nru ironic-2014.1~b3/ironic/tests/db/test_ports.py ironic-2014.1~rc1/ironic/tests/db/test_ports.py --- ironic-2014.1~b3/ironic/tests/db/test_ports.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/db/test_ports.py 2014-04-01 19:49:34.000000000 +0000 @@ -114,15 +114,6 @@ self.assertRaises(exception.NodeLocked, self.dbapi.destroy_port, p.id) - def test_update_port_on_reserved_node(self): - p = self.dbapi.create_port(db_utils.get_test_port(node_id=self.n.id)) - uuid = self.n.uuid - self.dbapi.reserve_nodes('fake-reservation', [uuid]) - new_address = 'ff.ee.dd.cc.bb.aa' - self.assertRaises(exception.NodeLocked, - self.dbapi.update_port, p.id, - {'address': new_address}) - def test_update_port_duplicated_address(self): self.dbapi.create_port(self.p) address1 = self.p['address'] diff -Nru ironic-2014.1~b3/ironic/tests/db/utils.py ironic-2014.1~rc1/ironic/tests/db/utils.py --- ironic-2014.1~b3/ironic/tests/db/utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/db/utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -17,7 +17,7 @@ from ironic.common import states -def get_test_impi_info(): +def get_test_ipmi_info(): return { "ipmi_address": "1.2.3.4", "ipmi_username": "admin", @@ -25,15 +25,26 @@ } -def get_test_ssh_info(): - return { +def get_test_ssh_info(auth_type='password'): + result = { "ssh_address": "1.2.3.4", "ssh_username": "admin", - "ssh_password": "fake", "ssh_port": 22, "ssh_virt_type": "vbox", - "ssh_key_filename": "/not/real/file", } + if 'password' == auth_type: + result['ssh_password'] = 'fake' + elif 'file' == auth_type: + result['ssh_key_filename'] = '/not/real/file' + elif 'key' == auth_type: + result['ssh_key_contents'] = '--BEGIN PRIVATE ...blah' + elif 'too_many' == auth_type: + result['ssh_password'] = 'fake' + result['ssh_key_filename'] = '/not/real/file' + else: + # No auth details (is invalid) + pass + return result def get_test_pxe_info(): diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_fake.py ironic-2014.1~rc1/ironic/tests/drivers/test_fake.py --- ironic-2014.1~b3/ironic/tests/drivers/test_fake.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_fake.py 2014-04-01 19:49:34.000000000 +0000 @@ -70,34 +70,3 @@ self.driver.deploy.clean_up(None, None) self.driver.deploy.tear_down(None, None) - - def test_vendor_interface_route_valid_methods(self): - info = {'method': 'first_method', 'bar': 'baz'} - self.driver.vendor.validate(None, self.node, **info) - self.assertTrue(self.driver.vendor.vendor_passthru( - None, self.node, **info)) - - info['bar'] = 'bad info' - self.assertFalse(self.driver.vendor.vendor_passthru( - None, self.node, **info)) - - info['method'] = 'second_method' - self.driver.vendor.validate(None, self.node, **info) - self.assertFalse(self.driver.vendor.vendor_passthru( - None, self.node, **info)) - - info['bar'] = 'kazoo' - self.assertTrue(self.driver.vendor.vendor_passthru( - None, self.node, **info)) - - def test_vendor_interface_missing_param(self): - info = {'method': 'first_method'} - self.assertRaises(exception.InvalidParameterValue, - self.driver.vendor.validate, - None, self.node, **info) - - def test_vendor_interface_bad_method(self): - info = {'method': 'bad_method', 'bar': 'kazoo'} - self.assertRaises(exception.InvalidParameterValue, - self.driver.vendor.validate, - None, self.node, **info) diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_ipminative.py ironic-2014.1~rc1/ironic/tests/drivers/test_ipminative.py --- ironic-2014.1~b3/ironic/tests/drivers/test_ipminative.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_ipminative.py 2014-04-01 19:49:34.000000000 +0000 @@ -35,7 +35,7 @@ CONF = cfg.CONF -INFO_DICT = db_utils.get_test_impi_info() +INFO_DICT = db_utils.get_test_ipmi_info() class IPMINativePrivateMethodTestCase(base.TestCase): diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_ipmitool.py ironic-2014.1~rc1/ironic/tests/drivers/test_ipmitool.py --- ironic-2014.1~b3/ironic/tests/drivers/test_ipmitool.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_ipmitool.py 2014-04-01 19:49:34.000000000 +0000 @@ -41,7 +41,7 @@ CONF = cfg.CONF -INFO_DICT = db_utils.get_test_impi_info() +INFO_DICT = db_utils.get_test_ipmi_info() class IPMIToolPrivateMethodTestCase(base.TestCase): @@ -239,7 +239,8 @@ self.info) mock_exec.assert_called_once_with(self.info, "power status") - def test__power_on_max_retries(self): + @mock.patch('eventlet.greenthread.sleep') + def test__power_on_max_retries(self, sleep_mock): self.config(retry_timeout=2, group='ipmi') def side_effect(driver_info, command): @@ -251,9 +252,7 @@ autospec=True) as mock_exec: mock_exec.side_effect = side_effect - expected = [mock.call(self.info, "power status"), - mock.call(self.info, "power on"), - mock.call(self.info, "power status"), + expected = [mock.call(self.info, "power on"), mock.call(self.info, "power status"), mock.call(self.info, "power status")] @@ -458,3 +457,21 @@ device='pxe') boot_mock.assert_called_once_with(task, self.node, 'pxe', False) + + @mock.patch.object(ipmi, '_exec_ipmitool') + def test_validate_ok(self, exec_mock): + exec_mock.return_value = ('System GUID: fake', '') + with task_manager.acquire(self.context, + [self.node['uuid']]) as task: + task.driver.power.validate(task, task.node) + exec_mock.assert_called_once() + + @mock.patch.object(ipmi, '_exec_ipmitool') + def test_validate_fail(self, exec_mock): + exec_mock.side_effect = Exception + with task_manager.acquire(self.context, + [self.node['uuid']]) as task: + self.assertRaises(exception.InvalidParameterValue, + task.driver.power.validate, task, + task.node) + exec_mock.assert_called_once() diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_pxe.py ironic-2014.1~rc1/ironic/tests/drivers/test_pxe.py --- ironic-2014.1~b3/ironic/tests/drivers/test_pxe.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_pxe.py 2014-04-01 19:49:34.000000000 +0000 @@ -30,6 +30,7 @@ from ironic.common.glance_service import base_image_service from ironic.common.glance_service import service_utils from ironic.common import images +from ironic.common import keystone from ironic.common import neutron from ironic.common import states from ironic.common import utils @@ -173,6 +174,13 @@ pxe._parse_driver_info, node) + def test__parse_driver_info_swap_defaults_to_1mb(self): + info = dict(INFO_DICT) + info['pxe_swap_mb'] = 0 + node = self._create_test_node(driver_info=info) + data = pxe._parse_driver_info(node) + self.assertEqual(1, data.get('swap_mb')) + def test__get_pxe_mac_path(self): mac = '00:11:22:33:44:55:66' self.assertEqual('/tftpboot/pxelinux.cfg/01-00-11-22-33-44-55-66', @@ -237,7 +245,7 @@ self.lock_file = lock_file def run(self): - time.sleep(2) + time.sleep(0.2) open(os.path.join(master_path, 'node_uuid'), 'w').close() pxe._remove_download_in_progress_lock(self.lock_file) @@ -614,6 +622,7 @@ self.node = self.dbapi.create_node(n) self.port = self.dbapi.create_port(db_utils.get_test_port( node_id=self.node.id)) + self.config(group='conductor', api_url='http://127.0.0.1:1234/') def _create_token_file(self): token_path = pxe._get_token_file_path(self.node['uuid']) @@ -645,6 +654,42 @@ task.resources[0].driver.deploy.validate, task, new_node) + @mock.patch.object(keystone, 'get_service_url') + def test_validate_good_api_url_from_config_file(self, mock_ks): + # not present in the keystone catalog + mock_ks.side_effect = exception.CatalogFailure + + with task_manager.acquire(self.context, [self.node.uuid], + shared=True) as task: + task.resources[0].driver.deploy.validate(task, self.node) + self.assertFalse(mock_ks.called) + + @mock.patch.object(keystone, 'get_service_url') + def test_validate_good_api_url_from_keystone(self, mock_ks): + # present in the keystone catalog + mock_ks.return_value = 'http://127.0.0.1:1234' + # not present in the config file + self.config(group='conductor', api_url=None) + + with task_manager.acquire(self.context, [self.node.uuid], + shared=True) as task: + task.resources[0].driver.deploy.validate(task, self.node) + mock_ks.assert_called_once_with() + + @mock.patch.object(keystone, 'get_service_url') + def test_validate_fail_no_api_url(self, mock_ks): + # not present in the keystone catalog + mock_ks.side_effect = exception.CatalogFailure + # not present in the config file + self.config(group='conductor', api_url=None) + + with task_manager.acquire(self.context, [self.node.uuid], + shared=True) as task: + self.assertRaises(exception.InvalidParameterValue, + task.resources[0].driver.deploy.validate, + task, self.node) + mock_ks.assert_called_once_with() + def test__get_nodes_mac_addresses(self): ports = [] ports.append(self.port) @@ -717,19 +762,26 @@ with mock.patch.object(pxe, '_update_neutron') as update_neutron_mock: with mock.patch.object(manager_utils, 'node_power_action') as node_power_mock: - with task_manager.acquire(self.context, + with mock.patch.object(manager_utils, + 'node_set_boot_device') as node_set_boot_mock: + with task_manager.acquire(self.context, self.node['uuid'], shared=False) as task: - state = task.driver.deploy.deploy(task, self.node) - self.assertEqual(states.DEPLOYWAIT, state) - update_neutron_mock.assert_called_once_with(task, - self.node) - node_power_mock.assert_called_once_with(task, self.node, - states.REBOOT) - - # ensure token file created - t_path = pxe._get_token_file_path(self.node['uuid']) - token = open(t_path, 'r').read() - self.assertEqual(self.context.auth_token, token) + state = task.driver.deploy.deploy(task, self.node) + self.assertEqual(state, states.DEPLOYWAIT) + update_neutron_mock.assert_called_once_with(task, + self.node) + node_set_boot_mock.assert_called_once_with(task, + self.node, + 'pxe', + persistent=True) + node_power_mock.assert_called_once_with(task, + self.node, + states.REBOOT) + + # ensure token file created + t_path = pxe._get_token_file_path(self.node['uuid']) + token = open(t_path, 'r').read() + self.assertEqual(self.context.auth_token, token) def test_tear_down(self): with mock.patch.object(manager_utils, @@ -741,6 +793,16 @@ node_power_mock.assert_called_once_with(task, self.node, states.POWER_OFF) + @mock.patch.object(manager_utils, 'node_power_action') + def test_tear_down_removes_pxe_deploy_key(self, mock_npa): + self.assertIn('pxe_deploy_key', self.node.driver_info) + with task_manager.acquire(self.context, self.node.uuid) as task: + task.driver.deploy.tear_down(task, self.node) + + self.node.refresh(self.context) + self.assertNotIn('pxe_deploy_key', self.node.driver_info) + mock_npa.assert_called_once_with(task, self.node, states.POWER_OFF) + def test_take_over(self): with mock.patch.object(pxe, '_update_neutron') as update_neutron_mock: with task_manager.acquire( @@ -761,8 +823,7 @@ 'ironic.drivers.modules.deploy_utils.deploy', fake_deploy)) - with task_manager.acquire(self.context, self.node.uuid, - shared=True) as task: + with task_manager.acquire(self.context, self.node.uuid) as task: task.resources[0].driver.vendor.vendor_passthru(task, self.node, method='pass_deploy_info', address='123456', iqn='aaa-bbb', key='fake-56789') @@ -784,8 +845,7 @@ 'ironic.drivers.modules.deploy_utils.deploy', fake_deploy)) - with task_manager.acquire(self.context, [self.node.uuid], - shared=True) as task: + with task_manager.acquire(self.context, [self.node.uuid]) as task: task.resources[0].driver.vendor.vendor_passthru(task, self.node, method='pass_deploy_info', address='123456', iqn='aaa-bbb', key='fake-56789') @@ -807,8 +867,7 @@ 'ironic.drivers.modules.deploy_utils.deploy', fake_deploy)) - with task_manager.acquire(self.context, [self.node.uuid], - shared=True) as task: + with task_manager.acquire(self.context, [self.node.uuid]) as task: task.resources[0].driver.vendor.vendor_passthru(task, self.node, method='pass_deploy_info', address='123456', iqn='aaa-bbb', key='fake-56789', error='test ramdisk error') @@ -822,8 +881,7 @@ self.node.provision_state = 'FAKE' self.node.save(self.context) - with task_manager.acquire(self.context, [self.node.uuid], - shared=True) as task: + with task_manager.acquire(self.context, [self.node.uuid]) as task: task.resources[0].driver.vendor.vendor_passthru(task, self.node, method='pass_deploy_info', address='123456', iqn='aaa-bbb', key='fake-56789', error='test ramdisk error') @@ -831,8 +889,7 @@ self.assertEqual(states.POWER_ON, self.node.power_state) def test_lock_elevated(self): - with task_manager.acquire(self.context, [self.node['uuid']], - shared=True) as task: + with task_manager.acquire(self.context, [self.node['uuid']]) as task: with mock.patch.object(task.driver.vendor, '_continue_deploy') \ as _continue_deploy_mock: task.driver.vendor.vendor_passthru(task, self.node, diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_seamicro.py ironic-2014.1~rc1/ironic/tests/drivers/test_seamicro.py --- ironic-2014.1~b3/ironic/tests/drivers/test_seamicro.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_seamicro.py 2014-04-01 19:49:34.000000000 +0000 @@ -15,7 +15,6 @@ import uuid import mock -from seamicroclient import exceptions as seamicro_client_exception from ironic.common import driver_factory from ironic.common import exception @@ -23,6 +22,7 @@ from ironic.conductor import task_manager from ironic.db import api as dbapi from ironic.drivers.modules import seamicro +from ironic.openstack.common import importutils from ironic.tests import base from ironic.tests.conductor import utils as mgr_utils from ironic.tests.db import base as db_base @@ -30,6 +30,10 @@ INFO_DICT = db_utils.get_test_seamicro_info() +seamicroclient = importutils.try_import("seamicroclient") +if seamicroclient: + from seamicroclient import exceptions as seamicro_client_exception + class Fake_Server(): def __init__(self, active=False, *args, **kwargs): @@ -137,6 +141,11 @@ self.Server = Fake_Server self.Volume = Fake_Volume self.Pool = Fake_Pool + self.config(action_timeout=0, group='seamicro') + self.config(max_retry=2, group='seamicro') + + self.patcher = mock.patch('eventlet.greenthread.sleep') + self.mock_sleep = self.patcher.start() def _create_test_node(self, **kwargs): n = db_utils.get_test_node(**kwargs) @@ -163,7 +172,7 @@ @mock.patch.object(seamicro, "_get_server") def test__power_on_good(self, mock_get_server): mock_get_server.return_value = self.Server(active=False) - pstate = seamicro._power_on(self.node, timeout=2) + pstate = seamicro._power_on(self.node) self.assertEqual(states.POWER_ON, pstate) @mock.patch.object(seamicro, "_get_server") @@ -174,13 +183,13 @@ server = self.Server(active=False) server.power_on = fake_power_on mock_get_server.return_value = server - pstate = seamicro._power_on(self.node, timeout=2) + pstate = seamicro._power_on(self.node) self.assertEqual(states.ERROR, pstate) @mock.patch.object(seamicro, "_get_server") def test__power_off_good(self, mock_get_server): mock_get_server.return_value = self.Server(active=True) - pstate = seamicro._power_off(self.node, timeout=2) + pstate = seamicro._power_off(self.node) self.assertEqual(states.POWER_OFF, pstate) @mock.patch.object(seamicro, "_get_server") @@ -190,13 +199,13 @@ server = self.Server(active=True) server.power_off = fake_power_off mock_get_server.return_value = server - pstate = seamicro._power_off(self.node, timeout=2) + pstate = seamicro._power_off(self.node) self.assertEqual(states.ERROR, pstate) @mock.patch.object(seamicro, "_get_server") def test__reboot_good(self, mock_get_server): mock_get_server.return_value = self.Server(active=True) - pstate = seamicro._reboot(self.node, timeout=2) + pstate = seamicro._reboot(self.node) self.assertEqual(states.POWER_ON, pstate) @mock.patch.object(seamicro, "_get_server") @@ -206,7 +215,7 @@ server = self.Server(active=False) server.reset = fake_reboot mock_get_server.return_value = server - pstate = seamicro._reboot(self.node, timeout=2) + pstate = seamicro._reboot(self.node) self.assertEqual(states.ERROR, pstate) @mock.patch.object(seamicro, "_get_volume") @@ -251,6 +260,8 @@ def setUp(self): super(SeaMicroPowerDriverTestCase, self).setUp() + if not seamicroclient: + self.skipTest("Seamicroclient library not found") mgr_utils.mock_the_extension_manager(driver='fake_seamicro') self.driver = driver_factory.get_driver('fake_seamicro') self.node = db_utils.get_test_node(driver='fake_seamicro', @@ -351,8 +362,8 @@ with task_manager.acquire(self.context, [self.node['uuid']], shared=True) as task: for method in seamicro.VENDOR_PASSTHRU_METHODS: - task.resources[0].driver.vendor.validate(self.node, - **{'method': method}) + task.resources[0].driver.vendor.validate( + task, self.node, **{'method': method}) def test_vendor_passthru_validate_fail(self): with task_manager.acquire(self.context, [self.node['uuid']], @@ -491,7 +502,7 @@ mock_get_server.return_value = self.Server(active="true") with task_manager.acquire(self.context, [info['uuid']], shared=False) as task: - kwargs = {'boot_device': boot_device, 'method': 'set_boot_device'} + kwargs = {'device': boot_device, 'method': 'set_boot_device'} task.resources[0].driver.vendor.\ vendor_passthru(task, self.node, **kwargs) mock_get_server.assert_called_once_with(info) @@ -512,7 +523,7 @@ mock_get_server.return_value = self.Server(active="true") with task_manager.acquire(self.context, [info['uuid']], shared=False) as task: - kwargs = {'boot_device': boot_device, 'method': 'set_boot_device'} + kwargs = {'device': boot_device, 'method': 'set_boot_device'} self.assertRaises(exception.InvalidParameterValue, task.resources[0].driver.vendor. vendor_passthru, task, self.node, **kwargs) @@ -529,7 +540,7 @@ mock_get_server.return_value = server with task_manager.acquire(self.context, [info['uuid']], shared=False) as task: - kwargs = {'boot_device': boot_device, 'method': 'set_boot_device'} + kwargs = {'device': boot_device, 'method': 'set_boot_device'} self.assertRaises(exception.IronicException, task.resources[0].driver.vendor. vendor_passthru, task, self.node, **kwargs) diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_ssh.py ironic-2014.1~rc1/ironic/tests/drivers/test_ssh.py --- ironic-2014.1~b3/ironic/tests/drivers/test_ssh.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_ssh.py 2014-04-01 19:49:34.000000000 +0000 @@ -15,6 +15,7 @@ """Test class for Ironic SSH power driver.""" +import fixtures import mock import paramiko @@ -35,16 +36,15 @@ from oslo.config import cfg CONF = cfg.CONF -INFO_DICT = db_utils.get_test_ssh_info() class SSHValidateParametersTestCase(base.TestCase): - def test__parse_driver_info_good(self): + def test__parse_driver_info_good_password(self): # make sure we get back the expected things node = db_utils.get_test_node( driver='fake_ssh', - driver_info=INFO_DICT) + driver_info=db_utils.get_test_ssh_info('password')) info = ssh._parse_driver_info(node) self.assertIsNotNone(info.get('host')) self.assertIsNotNone(info.get('username')) @@ -54,11 +54,54 @@ self.assertIsNotNone(info.get('cmd_set')) self.assertIsNotNone(info.get('uuid')) + def test__parse_driver_info_good_key(self): + # make sure we get back the expected things + node = db_utils.get_test_node( + driver='fake_ssh', + driver_info=db_utils.get_test_ssh_info('key')) + info = ssh._parse_driver_info(node) + self.assertIsNotNone(info.get('host')) + self.assertIsNotNone(info.get('username')) + self.assertIsNotNone(info.get('key_contents')) + self.assertIsNotNone(info.get('port')) + self.assertIsNotNone(info.get('virt_type')) + self.assertIsNotNone(info.get('cmd_set')) + self.assertIsNotNone(info.get('uuid')) + + def test__parse_driver_info_good_file(self): + # make sure we get back the expected things + d_info = db_utils.get_test_ssh_info('file') + tempdir = self.useFixture(fixtures.TempDir()) + key_path = tempdir.path + '/foo' + open(key_path, 'wt').close() + d_info['ssh_key_filename'] = key_path + node = db_utils.get_test_node(driver='fake_ssh', driver_info=d_info) + info = ssh._parse_driver_info(node) + self.assertIsNotNone(info.get('host')) + self.assertIsNotNone(info.get('username')) + self.assertIsNotNone(info.get('key_filename')) + self.assertIsNotNone(info.get('port')) + self.assertIsNotNone(info.get('virt_type')) + self.assertIsNotNone(info.get('cmd_set')) + self.assertIsNotNone(info.get('uuid')) + + def test__parse_driver_info_bad_file(self): + # A filename that doesn't exist errors. + info = db_utils.get_test_ssh_info('file') + node = db_utils.get_test_node(driver='fake_ssh', driver_info=info) + self.assertRaises( + exception.InvalidParameterValue, ssh._parse_driver_info, node) + + def test__parse_driver_info_too_many(self): + info = db_utils.get_test_ssh_info('too_many') + node = db_utils.get_test_node(driver='fake_ssh', driver_info=info) + self.assertRaises( + exception.InvalidParameterValue, ssh._parse_driver_info, node) + def test__parse_driver_info_missing_host(self): # make sure error is raised when info is missing - info = dict(INFO_DICT) + info = db_utils.get_test_ssh_info() del info['ssh_address'] - del info['ssh_key_filename'] node = db_utils.get_test_node(driver_info=info) self.assertRaises(exception.InvalidParameterValue, ssh._parse_driver_info, @@ -66,19 +109,16 @@ def test__parse_driver_info_missing_user(self): # make sure error is raised when info is missing - info = dict(INFO_DICT) + info = db_utils.get_test_ssh_info() del info['ssh_username'] - del info['ssh_key_filename'] node = db_utils.get_test_node(driver_info=info) self.assertRaises(exception.InvalidParameterValue, ssh._parse_driver_info, node) - def test__parse_driver_info_missing_pass(self): + def test__parse_driver_info_missing_creds(self): # make sure error is raised when info is missing - info = dict(INFO_DICT) - del info['ssh_password'] - del info['ssh_key_filename'] + info = db_utils.get_test_ssh_info('no-creds') node = db_utils.get_test_node(driver_info=info) self.assertRaises(exception.InvalidParameterValue, ssh._parse_driver_info, @@ -86,9 +126,8 @@ def test__parse_driver_info_missing_virt_type(self): # make sure error is raised when info is missing - info = dict(INFO_DICT) + info = db_utils.get_test_ssh_info() del info['ssh_virt_type'] - del info['ssh_key_filename'] node = db_utils.get_test_node(driver_info=info) self.assertRaises(exception.InvalidParameterValue, ssh._parse_driver_info, @@ -96,22 +135,13 @@ def test__parse_driver_info_ssh_port_wrong_type(self): # make sure error is raised when ssh_port is not integer - info = dict(INFO_DICT) + info = db_utils.get_test_ssh_info() info['ssh_port'] = 'wrong_port_value' node = db_utils.get_test_node(driver_info=info) self.assertRaises(exception.InvalidParameterValue, ssh._parse_driver_info, node) - def test__parse_driver_info_missing_key(self): - # make sure error is raised when info is missing - info = dict(INFO_DICT) - del info['ssh_password'] - node = db_utils.get_test_node(driver_info=info) - self.assertRaises(exception.InvalidParameterValue, - ssh._parse_driver_info, - node) - def test__normalize_mac_string(self): mac_raw = "0A:1B-2C-3D:4F" mac_clean = ssh._normalize_mac(mac_raw) @@ -126,7 +156,9 @@ CONF.set_override('libvirt_uri', 'qemu:///foo', 'ssh') expected_base_cmd = "/usr/bin/virsh --connect qemu:///foo" - node = db_utils.get_test_node(driver='fake_ssh', driver_info=INFO_DICT) + node = db_utils.get_test_node( + driver='fake_ssh', + driver_info=db_utils.get_test_ssh_info()) node['driver_info']['ssh_virt_type'] = 'virsh' info = ssh._parse_driver_info(node) self.assertEqual(expected_base_cmd, info['cmd_set']['base_cmd']) @@ -138,7 +170,7 @@ super(SSHPrivateMethodsTestCase, self).setUp() self.node = db_utils.get_test_node( driver='fake_ssh', - driver_info=INFO_DICT) + driver_info=db_utils.get_test_ssh_info()) self.sshclient = paramiko.SSHClient() # Set up the mock for processutils.ssh_execute because most tests use @@ -558,7 +590,7 @@ self.driver = driver_factory.get_driver("fake_ssh") n = db_utils.get_test_node( driver='fake_ssh', - driver_info=INFO_DICT) + driver_info=db_utils.get_test_ssh_info()) self.dbapi = dbapi.get_instance() self.node = self.dbapi.create_node(n) self.port = self.dbapi.create_port(db_utils.get_test_port( @@ -638,7 +670,8 @@ new_node = self.dbapi.create_node(db_utils.get_test_node(id=321, uuid='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', - driver='fake_ssh', driver_info=INFO_DICT)) + driver='fake_ssh', + driver_info=db_utils.get_test_ssh_info())) with task_manager.acquire(self.context, [new_node.uuid], shared=True) as task: self.assertRaises(exception.InvalidParameterValue, diff -Nru ironic-2014.1~b3/ironic/tests/drivers/test_utils.py ironic-2014.1~rc1/ironic/tests/drivers/test_utils.py --- ironic-2014.1~b3/ironic/tests/drivers/test_utils.py 1970-01-01 00:00:00.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/drivers/test_utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -0,0 +1,70 @@ +# 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 mock + +from ironic.common import driver_factory +from ironic.common import exception +from ironic.db import api as db_api +from ironic.drivers.modules import fake +from ironic.openstack.common import context +from ironic.tests import base +from ironic.tests.conductor import utils as mgr_utils +from ironic.tests.db import utils as db_utils + + +class UtilsTestCase(base.TestCase): + + def setUp(self): + super(UtilsTestCase, self).setUp() + self.context = context.get_admin_context() + self.dbapi = db_api.get_instance() + mgr_utils.mock_the_extension_manager() + self.driver = driver_factory.get_driver("fake") + self.node = db_utils.get_test_node() + self.dbapi.create_node(self.node) + + @mock.patch.object(fake.FakeVendorA, 'validate') + def test_vendor_interface_validate_valid_methods(self, + mock_fakea_validate): + self.driver.vendor.validate(method='first_method') + mock_fakea_validate.assert_called_once_with(method='first_method') + + def test_vendor_interface_validate_bad_method(self): + self.assertRaises(exception.UnsupportedDriverExtension, + self.driver.vendor.validate, method='fake_method') + + def test_vendor_interface_validate_none_method(self): + self.assertRaises(exception.InvalidParameterValue, + self.driver.vendor.validate) + + @mock.patch.object(fake.FakeVendorA, 'vendor_passthru') + @mock.patch.object(fake.FakeVendorB, 'vendor_passthru') + def test_vendor_interface_route_valid_method(self, mock_fakeb_vendor, + mock_fakea_vendor): + self.driver.vendor.vendor_passthru('task', 'node', + method='first_method', + param1='fake1', param2='fake2') + mock_fakea_vendor.assert_called_once_with('task', + 'node', + method='first_method', + param1='fake1', param2='fake2') + self.driver.vendor.vendor_passthru('task', 'node', + method='second_method', + param1='fake1', param2='fake2') + mock_fakeb_vendor.assert_called_once_with('task', + 'node', + method='second_method', + param1='fake1', param2='fake2') diff -Nru ironic-2014.1~b3/ironic/tests/__init__.py ironic-2014.1~rc1/ironic/tests/__init__.py --- ironic-2014.1~b3/ironic/tests/__init__.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/__init__.py 2014-04-01 19:49:34.000000000 +0000 @@ -30,5 +30,5 @@ # See http://code.google.com/p/python-nose/issues/detail?id=373 # The code below enables nosetests to work with i18n _() blocks -import __builtin__ +import six.moves.builtins as __builtin__ setattr(__builtin__, '_', lambda x: x) diff -Nru ironic-2014.1~b3/ironic/tests/test_keystone.py ironic-2014.1~rc1/ironic/tests/test_keystone.py --- ironic-2014.1~b3/ironic/tests/test_keystone.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/test_keystone.py 2014-04-01 19:49:34.000000000 +0000 @@ -12,14 +12,27 @@ # License for the specific language governing permissions and limitations # under the License. -import fixtures from keystoneclient import exceptions as ksexception +import mock from ironic.common import exception from ironic.common import keystone from ironic.tests import base +class FakeCatalog: + def url_for(self, **kwargs): + return 'fake-url' + + +class FakeClient: + def __init__(self, **kwargs): + self.service_catalog = FakeCatalog() + + def has_service_catalog(self): + return True + + class KeystoneTestCase(base.TestCase): def setUp(self): @@ -32,70 +45,68 @@ def test_failure_authorization(self): self.assertRaises(exception.CatalogFailure, keystone.get_service_url) - def test_get_url(self): + @mock.patch.object(FakeCatalog, 'url_for') + @mock.patch('keystoneclient.v2_0.client.Client') + def test_get_url(self, mock_ks, mock_uf): fake_url = 'http://127.0.0.1:6385' - - class _fake_catalog: - def url_for(self, **kwargs): - return fake_url - - class _fake_client: - def __init__(self, **kwargs): - self.service_catalog = _fake_catalog() - - def has_service_catalog(self): - return True - - self.useFixture(fixtures.MonkeyPatch( - 'keystoneclient.v2_0.client.Client', - _fake_client)) - + mock_uf.return_value = fake_url + mock_ks.return_value = FakeClient() res = keystone.get_service_url() self.assertEqual(fake_url, res) - def test_url_not_found(self): - - class _fake_catalog: - def url_for(self, **kwargs): - raise ksexception.EndpointNotFound - - class _fake_client: - def __init__(self, **kwargs): - self.service_catalog = _fake_catalog() - - def has_service_catalog(self): - return True - - self.useFixture(fixtures.MonkeyPatch( - 'keystoneclient.v2_0.client.Client', - _fake_client)) - + @mock.patch.object(FakeCatalog, 'url_for') + @mock.patch('keystoneclient.v2_0.client.Client') + def test_url_not_found(self, mock_ks, mock_uf): + mock_uf.side_effect = ksexception.EndpointNotFound + mock_ks.return_value = FakeClient() self.assertRaises(exception.CatalogNotFound, keystone.get_service_url) - def test_no_catalog(self): - - class _fake_client: - def __init__(self, **kwargs): - pass - - def has_service_catalog(self): - return False - - self.useFixture(fixtures.MonkeyPatch( - 'keystoneclient.v2_0.client.Client', - _fake_client)) - + @mock.patch.object(FakeClient, 'has_service_catalog') + @mock.patch('keystoneclient.v2_0.client.Client') + def test_no_catalog(self, mock_ks, mock_hsc): + mock_hsc.return_value = False + mock_ks.return_value = FakeClient() self.assertRaises(exception.CatalogFailure, keystone.get_service_url) - def test_unauthorized(self): - - class _fake_client: - def __init__(self, **kwargs): - raise ksexception.Unauthorized - - self.useFixture(fixtures.MonkeyPatch( - 'keystoneclient.v2_0.client.Client', - _fake_client)) - + @mock.patch('keystoneclient.v2_0.client.Client') + def test_unauthorized(self, mock_ks): + mock_ks.side_effect = ksexception.Unauthorized self.assertRaises(exception.CatalogUnauthorized, keystone.get_service_url) + + def test_get_service_url_fail_missing_auth_uri(self): + self.config(group='keystone_authtoken', auth_uri=None) + self.assertRaises(exception.CatalogFailure, + keystone.get_service_url) + + @mock.patch('keystoneclient.v2_0.client.Client') + def test_get_service_url_versionless_v2(self, mock_ks): + mock_ks.return_value = FakeClient() + self.config(group='keystone_authtoken', auth_uri='http://127.0.0.1') + expected_url = 'http://127.0.0.1/v2.0' + keystone.get_service_url() + mock_ks.assert_called_once_with(username='fake', password='fake', + tenant_name='fake', + auth_url=expected_url) + + @mock.patch('keystoneclient.v3.client.Client') + def test_get_service_url_versionless_v3(self, mock_ks): + mock_ks.return_value = FakeClient() + self.config(group='keystone_authtoken', auth_version='v3.0', + auth_uri='http://127.0.0.1') + expected_url = 'http://127.0.0.1/v3' + keystone.get_service_url() + mock_ks.assert_called_once_with(username='fake', password='fake', + tenant_name='fake', + auth_url=expected_url) + + @mock.patch('keystoneclient.v2_0.client.Client') + def test_get_service_url_version_override(self, mock_ks): + mock_ks.return_value = FakeClient() + self.config(group='keystone_authtoken', + auth_uri='http://127.0.0.1/v2.0/') + expected_url = 'http://127.0.0.1/v2.0' + keystone.get_service_url() + mock_ks.assert_called_once_with(username='fake', password='fake', + tenant_name='fake', + auth_url=expected_url) diff -Nru ironic-2014.1~b3/ironic/tests/test_neutron.py ironic-2014.1~rc1/ironic/tests/test_neutron.py --- ironic-2014.1~b3/ironic/tests/test_neutron.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/test_neutron.py 2014-04-01 19:49:34.000000000 +0000 @@ -114,3 +114,32 @@ exception.FailedToUpdateDHCPOptOnPort, api.update_port_dhcp_opts, port_id, opts) + + @mock.patch.object(client.Client, 'update_port') + @mock.patch.object(client.Client, '__init__') + def test_neutron_address_update(self, mock_client_init, mock_update_port): + address = 'fe:54:00:77:07:d9' + port_id = 'fake-port-id' + expected = {'port': {'mac_address': address}} + my_context = context.RequestContext(user='test-user', + tenant='test-tenant') + mock_client_init.return_value = None + api = neutron.NeutronAPI(my_context) + mock_update_port.return_value = None + api.update_port_address(port_id, address) + mock_update_port.assert_called_once_with(port_id, expected) + + @mock.patch.object(client.Client, 'update_port') + @mock.patch.object(client.Client, '__init__') + def test_neutron_address_update_with_exception(self, mock_client_init, + mock_update_port): + address = 'fe:54:00:77:07:d9' + port_id = 'fake-port-id' + my_context = context.RequestContext(user='test-user', + tenant='test-tenant') + mock_client_init.return_value = None + api = neutron.NeutronAPI(my_context) + mock_update_port.side_effect = ( + neutron_client_exc.NeutronClientException()) + self.assertRaises(exception.FailedToUpdateMacOnPort, + api.update_port_address, port_id, address) diff -Nru ironic-2014.1~b3/ironic/tests/test_utils.py ironic-2014.1~rc1/ironic/tests/test_utils.py --- ironic-2014.1~b3/ironic/tests/test_utils.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/tests/test_utils.py 2014-04-01 19:49:34.000000000 +0000 @@ -13,7 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -import __builtin__ import errno import hashlib import os @@ -25,6 +24,7 @@ import netaddr from oslo.config import cfg import six +import six.moves.builtins as __builtin__ from ironic.common import exception from ironic.common import utils diff -Nru ironic-2014.1~b3/ironic/version.py ironic-2014.1~rc1/ironic/version.py --- ironic-2014.1~b3/ironic/version.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/ironic/version.py 2014-04-01 19:49:34.000000000 +0000 @@ -13,33 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -try: - from ironic.vcsversion import version_info -except ImportError: - version_info = {'branch_nick': u'LOCALBRANCH', - 'revision_id': 'LOCALREVISION', - 'revno': 0} +import pbr.version -IRONIC_VERSION = ['2013', '1'] -YEAR, COUNT = IRONIC_VERSION - -FINAL = False # This becomes true at Release Candidate time - - -def canonical_version_string(): - return '.'.join([YEAR, COUNT]) - - -def version_string(): - if FINAL: - return canonical_version_string() - else: - return '%s-dev' % (canonical_version_string(),) - - -def vcs_version_string(): - return "%s:%s" % (version_info['branch_nick'], version_info['revision_id']) - - -def version_string_with_vcs(): - return "%s-%s" % (canonical_version_string(), vcs_version_string()) +version_info = pbr.version.VersionInfo('ironic') diff -Nru ironic-2014.1~b3/ironic.egg-info/entry_points.txt ironic-2014.1~rc1/ironic.egg-info/entry_points.txt --- ironic-2014.1~b3/ironic.egg-info/entry_points.txt 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/ironic.egg-info/entry_points.txt 2014-04-01 19:55:10.000000000 +0000 @@ -1,18 +1,18 @@ [console_scripts] -ironic-rootwrap = oslo.rootwrap.cmd:main -ironic-dbsync = ironic.cmd.dbsync:main -ironic-conductor = ironic.cmd.conductor:main ironic-api = ironic.cmd.api:main +ironic-conductor = ironic.cmd.conductor:main +ironic-dbsync = ironic.cmd.dbsync:main +ironic-rootwrap = oslo.rootwrap.cmd:main [ironic.drivers] -fake_seamicro = ironic.drivers.fake:FakeSeaMicroDriver -pxe_seamicro = ironic.drivers.pxe:PXEAndSeaMicroDriver -fake_ipminative = ironic.drivers.fake:FakeIPMINativeDriver -pxe_ipminative = ironic.drivers.pxe:PXEAndIPMINativeDriver fake = ironic.drivers.fake:FakeDriver -fake_ssh = ironic.drivers.fake:FakeSSHDriver +fake_ipminative = ironic.drivers.fake:FakeIPMINativeDriver fake_ipmitool = ironic.drivers.fake:FakeIPMIToolDriver fake_pxe = ironic.drivers.fake:FakePXEDriver -pxe_ssh = ironic.drivers.pxe:PXEAndSSHDriver +fake_seamicro = ironic.drivers.fake:FakeSeaMicroDriver +fake_ssh = ironic.drivers.fake:FakeSSHDriver +pxe_ipminative = ironic.drivers.pxe:PXEAndIPMINativeDriver pxe_ipmitool = ironic.drivers.pxe:PXEAndIPMIToolDriver +pxe_seamicro = ironic.drivers.pxe:PXEAndSeaMicroDriver +pxe_ssh = ironic.drivers.pxe:PXEAndSSHDriver diff -Nru ironic-2014.1~b3/ironic.egg-info/PKG-INFO ironic-2014.1~rc1/ironic.egg-info/PKG-INFO --- ironic-2014.1~b3/ironic.egg-info/PKG-INFO 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/ironic.egg-info/PKG-INFO 2014-04-01 19:55:10.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ironic -Version: 2014.1.b3 +Version: 2014.1.rc1 Summary: OpenStack Bare Metal Provisioning Home-page: http://www.openstack.org/ Author: OpenStack diff -Nru ironic-2014.1~b3/ironic.egg-info/requires.txt ironic-2014.1~rc1/ironic.egg-info/requires.txt --- ironic-2014.1~b3/ironic.egg-info/requires.txt 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/ironic.egg-info/requires.txt 2014-04-01 19:55:10.000000000 +0000 @@ -1,5 +1,5 @@ pbr>=0.6,<1.0 -SQLAlchemy>=0.7.8,<=0.8.99 +SQLAlchemy>=0.7.8,<=0.9.99 alembic>=0.4.1 amqplib>=0.6.1 anyjson>=0.3.3 @@ -10,10 +10,10 @@ WebOb>=1.2.3 greenlet>=0.3.2 futures>=2.1.3 -sqlalchemy-migrate>=0.8.2 +sqlalchemy-migrate>=0.8.2,!=0.8.4 netaddr>=0.7.6 paramiko>=1.9.0 -iso8601>=0.1.8 +iso8601>=0.1.9 python-neutronclient>=2.3.4,<3 python-glanceclient>=0.9.0 python-keystoneclient>=0.6.0 @@ -26,5 +26,4 @@ jsonpatch>=1.1 WSME>=0.6 Jinja2 -pyghmi>=0.5.8 -python-seamicroclient>=0.1.0,<2.0 \ No newline at end of file +pyghmi>=0.5.8 \ No newline at end of file diff -Nru ironic-2014.1~b3/ironic.egg-info/SOURCES.txt ironic-2014.1~rc1/ironic.egg-info/SOURCES.txt --- ironic-2014.1~b3/ironic.egg-info/SOURCES.txt 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/ironic.egg-info/SOURCES.txt 2014-04-01 19:55:10.000000000 +0000 @@ -15,17 +15,6 @@ tox.ini doc/source/conf.py doc/source/index.rst -doc/source/_static/basic.css -doc/source/_static/default.css -doc/source/_static/header-line.gif -doc/source/_static/header_bg.jpg -doc/source/_static/jquery.tweet.js -doc/source/_static/nature.css -doc/source/_static/openstack_logo.png -doc/source/_static/pygments.css -doc/source/_static/tweaks.css -doc/source/_theme/layout.html -doc/source/_theme/theme.conf doc/source/dev/api.rst doc/source/dev/architecture.rst doc/source/dev/common.rst @@ -59,13 +48,13 @@ ironic/api/config.py ironic/api/hooks.py ironic/api/controllers/__init__.py +ironic/api/controllers/base.py +ironic/api/controllers/link.py ironic/api/controllers/root.py ironic/api/controllers/v1/__init__.py -ironic/api/controllers/v1/base.py ironic/api/controllers/v1/chassis.py ironic/api/controllers/v1/collection.py ironic/api/controllers/v1/driver.py -ironic/api/controllers/v1/link.py ironic/api/controllers/v1/node.py ironic/api/controllers/v1/port.py ironic/api/controllers/v1/state.py @@ -125,6 +114,7 @@ ironic/drivers/base.py ironic/drivers/fake.py ironic/drivers/pxe.py +ironic/drivers/utils.py ironic/drivers/modules/__init__.py ironic/drivers/modules/deploy_utils.py ironic/drivers/modules/fake.py @@ -143,6 +133,7 @@ ironic/locale/cs/LC_MESSAGES/ironic.po ironic/locale/da/LC_MESSAGES/ironic.po ironic/locale/de/LC_MESSAGES/ironic.po +ironic/locale/el/LC_MESSAGES/ironic.po ironic/locale/en_AU/LC_MESSAGES/ironic.po ironic/locale/en_GB/LC_MESSAGES/ironic.po ironic/locale/en_US/LC_MESSAGES/ironic.po @@ -184,8 +175,12 @@ ironic/locale/ru_RU/LC_MESSAGES/ironic.po ironic/locale/sk/LC_MESSAGES/ironic.po ironic/locale/sl_SI/LC_MESSAGES/ironic.po +ironic/locale/sq/LC_MESSAGES/ironic.po +ironic/locale/sr/LC_MESSAGES/ironic.po ironic/locale/sv/LC_MESSAGES/ironic.po ironic/locale/sw_KE/LC_MESSAGES/ironic.po +ironic/locale/ta/LC_MESSAGES/ironic.po +ironic/locale/te_IN/LC_MESSAGES/ironic.po ironic/locale/tl/LC_MESSAGES/ironic.po ironic/locale/tl_PH/LC_MESSAGES/ironic.po ironic/locale/tr_TR/LC_MESSAGES/ironic.po @@ -195,6 +190,23 @@ ironic/locale/zh_CN/LC_MESSAGES/ironic.po ironic/locale/zh_HK/LC_MESSAGES/ironic.po ironic/locale/zh_TW/LC_MESSAGES/ironic.po +ironic/nova/__init__.py +ironic/nova/compute/__init__.py +ironic/nova/compute/manager.py +ironic/nova/scheduler/__init__.py +ironic/nova/scheduler/ironic_host_manager.py +ironic/nova/scheduler/filters/exact_core_filter.py +ironic/nova/scheduler/filters/exact_disk_filter.py +ironic/nova/scheduler/filters/exact_ram_filter.py +ironic/nova/tests/scheduler/ironic_fakes.py +ironic/nova/tests/scheduler/test_ironic_host_manager.py +ironic/nova/tests/virt/ironic/__init__.py +ironic/nova/tests/virt/ironic/test_driver.py +ironic/nova/virt/__init__.py +ironic/nova/virt/ironic/__init__.py +ironic/nova/virt/ironic/driver.py +ironic/nova/virt/ironic/ironic_driver_fields.py +ironic/nova/virt/ironic/ironic_states.py ironic/objects/__init__.py ironic/objects/base.py ironic/objects/chassis.py @@ -228,18 +240,19 @@ ironic/openstack/common/test.py ironic/openstack/common/threadgroup.py ironic/openstack/common/timeutils.py -ironic/openstack/common/version.py ironic/openstack/common/versionutils.py ironic/openstack/common/config/__init__.py ironic/openstack/common/config/generator.py ironic/openstack/common/db/__init__.py ironic/openstack/common/db/api.py ironic/openstack/common/db/exception.py +ironic/openstack/common/db/options.py ironic/openstack/common/db/sqlalchemy/__init__.py ironic/openstack/common/db/sqlalchemy/migration.py ironic/openstack/common/db/sqlalchemy/models.py ironic/openstack/common/db/sqlalchemy/provision.py ironic/openstack/common/db/sqlalchemy/session.py +ironic/openstack/common/db/sqlalchemy/test_base.py ironic/openstack/common/db/sqlalchemy/test_migrations.py ironic/openstack/common/db/sqlalchemy/utils.py ironic/openstack/common/db/sqlalchemy/migration_cli/__init__.py @@ -290,15 +303,16 @@ ironic/tests/api/base.py ironic/tests/api/test_acl.py ironic/tests/api/test_base.py -ironic/tests/api/test_chassis.py -ironic/tests/api/test_drivers.py ironic/tests/api/test_hooks.py -ironic/tests/api/test_nodes.py -ironic/tests/api/test_ports.py ironic/tests/api/test_root.py -ironic/tests/api/test_types.py -ironic/tests/api/test_utils.py ironic/tests/api/utils.py +ironic/tests/api/v1/__init__.py +ironic/tests/api/v1/test_chassis.py +ironic/tests/api/v1/test_drivers.py +ironic/tests/api/v1/test_nodes.py +ironic/tests/api/v1/test_ports.py +ironic/tests/api/v1/test_types.py +ironic/tests/api/v1/test_utils.py ironic/tests/conductor/__init__.py ironic/tests/conductor/test_conductor_utils.py ironic/tests/conductor/test_manager.py @@ -326,6 +340,7 @@ ironic/tests/drivers/test_pxe.py ironic/tests/drivers/test_seamicro.py ironic/tests/drivers/test_ssh.py +ironic/tests/drivers/test_utils.py ironic/tests/objects/__init__.py ironic/tests/objects/test_chassis.py ironic/tests/objects/test_conductor.py diff -Nru ironic-2014.1~b3/openstack-common.conf ironic-2014.1~rc1/openstack-common.conf --- ironic-2014.1~b3/openstack-common.conf 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/openstack-common.conf 2014-04-01 19:49:34.000000000 +0000 @@ -31,7 +31,6 @@ module=strutils module=timeutils module=test -module=version # The base module to hold the copy of openstack.common base=ironic diff -Nru ironic-2014.1~b3/PKG-INFO ironic-2014.1~rc1/PKG-INFO --- ironic-2014.1~b3/PKG-INFO 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/PKG-INFO 2014-04-01 19:55:10.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ironic -Version: 2014.1.b3 +Version: 2014.1.rc1 Summary: OpenStack Bare Metal Provisioning Home-page: http://www.openstack.org/ Author: OpenStack diff -Nru ironic-2014.1~b3/requirements.txt ironic-2014.1~rc1/requirements.txt --- ironic-2014.1~b3/requirements.txt 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/requirements.txt 2014-04-01 19:49:34.000000000 +0000 @@ -1,5 +1,5 @@ pbr>=0.6,<1.0 -SQLAlchemy>=0.7.8,<=0.8.99 +SQLAlchemy>=0.7.8,<=0.9.99 alembic>=0.4.1 amqplib>=0.6.1 anyjson>=0.3.3 @@ -11,10 +11,10 @@ WebOb>=1.2.3 greenlet>=0.3.2 futures>=2.1.3 -sqlalchemy-migrate>=0.8.2 +sqlalchemy-migrate>=0.8.2,!=0.8.4 netaddr>=0.7.6 paramiko>=1.9.0 -iso8601>=0.1.8 +iso8601>=0.1.9 python-neutronclient>=2.3.4,<3 python-glanceclient>=0.9.0 python-keystoneclient>=0.6.0 @@ -28,4 +28,3 @@ WSME>=0.6 Jinja2 pyghmi>=0.5.8 -python-seamicroclient>=0.1.0,<2.0 diff -Nru ironic-2014.1~b3/setup.cfg ironic-2014.1~rc1/setup.cfg --- ironic-2014.1~b3/setup.cfg 2014-03-06 17:38:54.000000000 +0000 +++ ironic-2014.1~rc1/setup.cfg 2014-04-01 19:55:10.000000000 +0000 @@ -1,6 +1,6 @@ [metadata] name = ironic -version = 2013.2 +version = 2014.1 summary = OpenStack Bare Metal Provisioning description-file = README.rst diff -Nru ironic-2014.1~b3/test-requirements.txt ironic-2014.1~rc1/test-requirements.txt --- ironic-2014.1~b3/test-requirements.txt 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/test-requirements.txt 2014-04-01 19:49:34.000000000 +0000 @@ -13,3 +13,4 @@ # Doc requirements sphinx>=1.1.2,<1.2 sphinxcontrib-pecanwsme>=0.6 +oslosphinx diff -Nru ironic-2014.1~b3/tools/config/generate_sample.sh ironic-2014.1~rc1/tools/config/generate_sample.sh --- ironic-2014.1~b3/tools/config/generate_sample.sh 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/tools/config/generate_sample.sh 2014-04-01 19:49:34.000000000 +0000 @@ -86,7 +86,7 @@ BASEDIRESC=`echo $BASEDIR | sed -e 's/\//\\\\\//g'` find $TARGETDIR -type f -name "*.pyc" -delete -FILES=$(find $TARGETDIR -type f -name "*.py" ! -path "*/tests/*" \ +FILES=$(find $TARGETDIR -type f -name "*.py" ! -path "*/tests/*" ! -path "*/nova/*" \ -exec grep -l "Opt(" {} + | sed -e "s/^$BASEDIRESC\///g" | sort -u) RC_FILE="`dirname $0`/oslo.config.generator.rc" diff -Nru ironic-2014.1~b3/tools/flakes.py ironic-2014.1~rc1/tools/flakes.py --- ironic-2014.1~b3/tools/flakes.py 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/tools/flakes.py 2014-04-01 19:49:34.000000000 +0000 @@ -7,9 +7,8 @@ __all__ = ['main'] -import __builtin__ as builtins import sys - +import six.moves.builtins as builtins import pyflakes.api from pyflakes import checker diff -Nru ironic-2014.1~b3/tox.ini ironic-2014.1~rc1/tox.ini --- ironic-2014.1~b3/tox.ini 2014-03-06 17:33:35.000000000 +0000 +++ ironic-2014.1~rc1/tox.ini 2014-04-01 19:49:35.000000000 +0000 @@ -12,6 +12,8 @@ commands = python setup.py testr --slowest --testr-args='{posargs}' +whitelist_externals = bash + [tox:jenkins] downloadcache = ~/cache/pip @@ -19,6 +21,8 @@ commands = flake8 {posargs} {toxinidir}/tools/config/check_uptodate.sh + # Check that .po and .pot files are valid: + bash -c "find ironic -type f -regex '.*\.pot?' -print0|xargs --null -n 1 msgfmt --check-format -o /dev/null" [testenv:cover] setenv = VIRTUAL_ENV={envdir} @@ -33,7 +37,7 @@ ignore = E12,E711 builtins = _ -exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,*ironic/nova*,tools +exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools [hacking] import_exceptions = ironic.openstack.common.gettextutils._,testtools.matchers