In watcher, an audit generates a set of actions which aims at achieving a given goal (lower energy consumption, ...). It is possible to configure different strategies in order to achieve each goal. Each strategy is written as a Python class which produces a set of actions. Today, the set of possible actions is fixed for a given version of Watcher and enables optimization algorithms to include actions such as instance migration, changing hypervisor state, changing power state (ACPI level, ...). This patchset add a common generic dynamic loader for plugins, such as for custom Actions, Strategies, Planners, etc. Partially implements: blueprint watcher-add-actions-via-conf Change-Id: I59d031b93865fff2540e3973921e1bdafa95f88e
334 lines
7.9 KiB
Plaintext
334 lines
7.9 KiB
Plaintext
# Translations template for python-watcher.
|
|
# Copyright (C) 2016 ORGANIZATION
|
|
# This file is distributed under the same license as the python-watcher
|
|
# project.
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
|
|
#
|
|
#, fuzzy
|
|
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: python-watcher 0.22.1.dev9\n"
|
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
"POT-Creation-Date: 2016-01-12 18:12+0100\n"
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
"MIME-Version: 1.0\n"
|
|
"Content-Type: text/plain; charset=utf-8\n"
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
"Generated-By: Babel 2.1.1\n"
|
|
|
|
#: watcher/api/controllers/v1/types.py:148
|
|
#, python-format
|
|
msgid "%s is not JSON serializable"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/types.py:184
|
|
#, python-format
|
|
msgid "Wrong type. Expected '%(type)s', got '%(value)s'"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/types.py:223
|
|
#, python-format
|
|
msgid "'%s' is an internal attribute and can not be updated"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/types.py:227
|
|
#, python-format
|
|
msgid "'%s' is a mandatory attribute and can not be removed"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/types.py:232
|
|
msgid "'add' and 'replace' operations needs value"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/utils.py:36
|
|
msgid "Limit must be positive"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/utils.py:47
|
|
#, python-format
|
|
msgid "Invalid sort direction: %s. Acceptable values are 'asc' or 'desc'"
|
|
msgstr ""
|
|
|
|
#: watcher/api/controllers/v1/utils.py:57
|
|
#, python-format
|
|
msgid "Adding a new attribute (%s) to the root of the resource is not allowed"
|
|
msgstr ""
|
|
|
|
#: watcher/api/middleware/auth_token.py:45
|
|
msgid "Cannot compile public API routes"
|
|
msgstr ""
|
|
|
|
#: watcher/api/middleware/parsable_error.py:52
|
|
#, python-format
|
|
msgid "ErrorDocumentMiddleware received an invalid status %s"
|
|
msgstr ""
|
|
|
|
#: watcher/applier/primitives/change_nova_service_state.py:75
|
|
msgid "The target state is not defined"
|
|
msgstr ""
|
|
|
|
#: watcher/cmd/api.py:46
|
|
#, python-format
|
|
msgid "Starting server in PID %s"
|
|
msgstr ""
|
|
|
|
#: watcher/cmd/api.py:51
|
|
#, python-format
|
|
msgid "serving on 0.0.0.0:%(port)s, view at http://127.0.0.1:%(port)s"
|
|
msgstr ""
|
|
|
|
#: watcher/cmd/api.py:55
|
|
#, python-format
|
|
msgid "serving on http://%(host)s:%(port)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:56
|
|
msgid "An unknown exception occurred"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:107
|
|
msgid "Not authorized"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:112
|
|
msgid "Operation not permitted"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:116
|
|
msgid "Unacceptable parameters"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:121
|
|
#, python-format
|
|
msgid "The %(name)s %(id)s could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:125
|
|
msgid "Conflict"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:130
|
|
#, python-format
|
|
msgid "The %(name)s resource %(id)s could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:135
|
|
#, python-format
|
|
msgid "Expected an uuid or int but received %(identity)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:139
|
|
#, python-format
|
|
msgid "Goal %(goal)s is not defined in Watcher configuration file"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:145
|
|
#, python-format
|
|
msgid "%(err)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:149
|
|
#, python-format
|
|
msgid "Expected a uuid but received %(uuid)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:153
|
|
#, python-format
|
|
msgid "Expected a logical name but received %(name)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:157
|
|
#, python-format
|
|
msgid "Expected a logical name or uuid but received %(name)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:161
|
|
#, python-format
|
|
msgid "AuditTemplate %(audit_template)s could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:165
|
|
#, python-format
|
|
msgid "An audit_template with UUID %(uuid)s or name %(name)s already exists"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:170
|
|
#, python-format
|
|
msgid "AuditTemplate %(audit_template)s is referenced by one or multiple audit"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:175
|
|
#, python-format
|
|
msgid "Audit %(audit)s could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:179
|
|
#, python-format
|
|
msgid "An audit with UUID %(uuid)s already exists"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:183
|
|
#, python-format
|
|
msgid "Audit %(audit)s is referenced by one or multiple action plans"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:188
|
|
msgid "ActionPlan %(action plan)s could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:192
|
|
#, python-format
|
|
msgid "An action plan with UUID %(uuid)s already exists"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:196
|
|
#, python-format
|
|
msgid "Action Plan %(action_plan)s is referenced by one or multiple actions"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:201
|
|
#, python-format
|
|
msgid "Action %(action)s could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:205
|
|
#, python-format
|
|
msgid "An action with UUID %(uuid)s already exists"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:209
|
|
#, python-format
|
|
msgid "Action plan %(action_plan)s is referenced by one or multiple goals"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:214
|
|
msgid "Filtering actions on both audit and action-plan is prohibited"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:223
|
|
#, python-format
|
|
msgid "Couldn't apply patch '%(patch)s'. Reason: %(reason)s"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:233
|
|
msgid "Description must be an instance of str"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:243
|
|
msgid "An exception occurred without a description"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:251
|
|
msgid "Description cannot be empty"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:260
|
|
msgid "No such metric"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:269
|
|
msgid "No rows were returned"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:277
|
|
msgid "'Keystone API endpoint is missing''"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:281
|
|
msgid "The list of hypervisor(s) in the cluster is empty"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:285
|
|
msgid "The metrics resource collector is not defined"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:289
|
|
msgid "the cluster state is not defined"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:295
|
|
msgid "The VM could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:299
|
|
msgid "The hypervisor could not be found"
|
|
msgstr ""
|
|
|
|
#: watcher/common/exception.py:303
|
|
#, python-format
|
|
msgid "Error loading plugin '%(name)s'"
|
|
msgstr ""
|
|
|
|
#: watcher/common/keystone.py:59
|
|
msgid "No Keystone service catalog loaded"
|
|
msgstr ""
|
|
|
|
#: watcher/db/sqlalchemy/api.py:256
|
|
msgid ""
|
|
"Multiple audit templates exist with the same name. Please use the audit "
|
|
"template uuid instead"
|
|
msgstr ""
|
|
|
|
#: watcher/db/sqlalchemy/api.py:277
|
|
msgid "Cannot overwrite UUID for an existing AuditTemplate."
|
|
msgstr ""
|
|
|
|
#: watcher/db/sqlalchemy/api.py:386 watcher/db/sqlalchemy/api.py:586
|
|
msgid "Cannot overwrite UUID for an existing Audit."
|
|
msgstr ""
|
|
|
|
#: watcher/db/sqlalchemy/api.py:477
|
|
msgid "Cannot overwrite UUID for an existing Action."
|
|
msgstr ""
|
|
|
|
#: watcher/db/sqlalchemy/migration.py:73
|
|
msgid ""
|
|
"Watcher database schema is already under version control; use upgrade() "
|
|
"instead"
|
|
msgstr ""
|
|
|
|
#: watcher/decision_engine/model/model_root.py:37
|
|
#: watcher/decision_engine/model/model_root.py:42
|
|
msgid "'obj' argument type is not valid"
|
|
msgstr ""
|
|
|
|
#: watcher/decision_engine/strategy/selection/default.py:59
|
|
#, python-format
|
|
msgid "Incorrect mapping: could not find associated strategy for '%s'"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/base.py:108
|
|
msgid "Invalid version string"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/base.py:299
|
|
#, python-format
|
|
msgid "Cannot load '%(attrname)s' in the base class"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/base.py:308
|
|
msgid "Cannot save anything in the base class"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/base.py:340
|
|
#, python-format
|
|
msgid "%(objname)s object has no attribute '%(attrname)s'"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/base.py:390
|
|
#, python-format
|
|
msgid "'%(objclass)s' object has no attribute '%(attrname)s'"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/utils.py:40
|
|
msgid "A datetime.datetime is required here"
|
|
msgstr ""
|
|
|
|
#: watcher/objects/utils.py:105
|
|
#, python-format
|
|
msgid "An object of class %s is required here"
|
|
msgstr ""
|
|
|