validate-modules
Программа на Python для проверки или валидации модулей Ansible.
validate-modules является одним из ansible-test Тестов на корректность, см. Тесты на корректность для получения дополнительной информации.
Разработан первоначально Мэттом Марцем (@sivel)
Использование
cd /path/to/ansible/source source hacking/env-setup ansible-test sanity --test validate-modules
Справка
usage: validate-modules [-h] [-w] [--exclude EXCLUDE] [--arg-spec]
[--base-branch BASE_BRANCH] [--format {json,plain}]
[--output OUTPUT]
modules [modules ...]
positional arguments:
modules Path to module or module directory
optional arguments:
-h, --help show this help message and exit
-w, --warnings Show warnings
--exclude EXCLUDE RegEx exclusion pattern
--arg-spec Analyze module argument spec
--base-branch BASE_BRANCH
Used in determining if new options were added
--format {json,plain}
Output format. Default: "plain"
--output OUTPUT Output location, use "-" for stdout. Default "-"
Расширение validate-modules
Инструмент validate-modules имеет файл schema.py, который используется для валидации блоков YAML, таких как DOCUMENTATION и RETURNS.
Коды
Ошибки
| код | пример сообщения |
| 1xx | Расположения |
| 101 | Строка интерпретатора не #!/usr/bin/python
|
| 102 | Строка интерпретатора не #!powershell
|
| 103 | Не найден вызов main()
|
| 104 | Вызов main() не является последней строкой |
| 105 | Заголовок лицензии GPLv3 не найден |
| 106 | Импорт найден до переменных документации. Все импорты должны располагаться ниже DOCUMENTATION/EXAMPLES/RETURN/ANSIBLE_METADATA
|
| 107 | Импорты должны располагаться непосредственно под DOCUMENTATION/EXAMPLES/RETURN/ANSIBLE_METADATA
|
| 2xx | Импорты |
| 201 | Не найден импорт module_utils |
| 203 | Найден импорт requests, следует использовать ansible.module_utils.urls вместо него |
| 204 | Найден импорт boto, новые модули должны использовать boto3 |
| 205 | Найден вызов sys.exit(). Следует использовать exit_json/fail_json |
| 206 | WANT_JSON не найден в модуле |
| 207 | REPLACER_WINDOWS не найден в модуле |
| 208 | Импорты module_utils должны импортировать конкретные компоненты, а не * |
| 209 | Разрешены только следующие импорты from __future__: absolute_import, division, и print_function. |
| 3xx | Документация |
| 301 | Не предоставлена документация DOCUMENTATION |
| 302 | DOCUMENTATION не является валидным YAML |
| 303 | Отсутствует фрагмент DOCUMENTATION |
| 304 | Неизвестная ошибка DOCUMENTATION |
| 305 | Неверная схема DOCUMENTATION |
| 306 | Модульный уровень version_added не является корректным номером версии |
| 307 | Модульный уровень version_added некорректен |
| 308 | version_added для новой опции не является корректным номером версии |
| 309 | version_added для новой опции некорректен |
| 310 | Не предоставлена документация EXAMPLES |
| 311 | EXAMPLES не является валидным YAML |
| 312 | Не предоставлена документация RETURN |
| 313 | RETURN не является валидным YAML |
| 314 | Не предоставлена документация ANSIBLE_METADATA |
| 315 | ANSIBLE_METADATA не является валидным YAML |
| 316 | Неверная схема ANSIBLE_METADATA |
| 317 | Параметр помечен как обязательный, но задан по умолчанию. Аргументы с значением по умолчанию не должны быть помечены как обязательные |
| 318 | Модуль устарел, но DOCUMENTATION.deprecated отсутствует |
| 319 | Отсутствуют или неверны фрагменты RETURN |
| 4xx | Синтаксис |
| 401 | Ошибка Python SyntaxError при разборе модуля |
| 402 | Отступы содержат табуляцию |
| 403 | Найден сравнительный тип с использованием type(). Используйте isinstance() вместо него |
| 5xx | Имена |
| 501 | Официальные модули Ansible должны иметь расширение .py для модулей Python или .ps1 для модулей PowerShell |
| 502 | Подкаталоги модулей Ansible должны содержать __init__.py
|
| 503 | Отсутствует файл документации Python |
Предупреждения
| код | пример сообщения |
| 1xx | Расположения |
| 107 | Импорты должны располагаться непосредственно под DOCUMENTATION/EXAMPLES/RETURN/ANSIBLE_METADATA для устаревших модулей |
| 2xx | Импорты |
| 208 | Импорты module_utils для устаревших модулей должны импортировать конкретные компоненты, а не * |
| 291 | Отсутствует выражение try/except HAS_ |
| 292 | Не найден импорт ansible.module_utils.basic |
| 3xx | Документация |
| 312 | Не предоставлена документация RETURN для устаревшего модуля |
| 391 | Неизвестная ошибка DOCUMENTATION |
| 392 | Отсутствует фрагмент DOCUMENTATION |
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/dev_guide/testing_validate-modules.html