88 lines
3.1 KiB
Python
88 lines
3.1 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
# Copyright 2020 Red Hat
|
|
# GNU General Public License v3.0+
|
|
# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
|
|
__metaclass__ = type
|
|
|
|
|
|
DOCUMENTATION = """
|
|
module: validate
|
|
author:
|
|
- Bradley Thornton (@cidrblock)
|
|
- Ganesh Nalawade (@ganeshrn)
|
|
short_description: Validate data with provided criteria
|
|
description:
|
|
- Validate data with provided criteria based on the validation engine.
|
|
version_added: 1.0.0
|
|
options:
|
|
data:
|
|
type: raw
|
|
description:
|
|
- Data that will be validated against I(criteria). For the type of data refer to the
|
|
documentation of individual validate plugins.
|
|
required: True
|
|
engine:
|
|
type: str
|
|
description:
|
|
- The name of the validate plugin to use. The engine value should follow
|
|
the fully qualified collection name format, that is
|
|
<org-name>.<collection-name>.<validate-plugin-name>.
|
|
default: ansible.utils.jsonschema
|
|
criteria:
|
|
type: raw
|
|
description:
|
|
- The criteria used for validation of I(data). For the type of criteria refer to the
|
|
documentation of individual validate plugins.
|
|
required: True
|
|
notes:
|
|
- For the type of options I(data) and I(criteria) refer to the individual validate plugin
|
|
documentation that is represented in the value of I(engine) option.
|
|
- For additional plugin configuration options refer to the individual validate plugin
|
|
documentation that is represented by the value of I(engine) option.
|
|
- The plugin configuration option can be either passed as task or environment variables.
|
|
- The precedence of the validate plugin configurable option is task variables followed
|
|
by the environment variables.
|
|
"""
|
|
|
|
EXAMPLES = r"""
|
|
- name: set facts for data and criteria
|
|
ansible.builtin.set_fact:
|
|
data: "{{ lookup('ansible.builtin.file', './validate/data/show_interfaces_iosxr.json') }}"
|
|
criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/jsonschema/show_interfaces_iosxr.json') }}"
|
|
|
|
- name: validate data in with jsonschema engine (by passing task vars as configurable plugin options)
|
|
ansible.utils.validate:
|
|
data: "{{ data }}"
|
|
criteria: "{{ criteria }}"
|
|
engine: ansible.utils.jsonschema
|
|
vars:
|
|
ansible_jsonschema_draft: draft7
|
|
|
|
- name: validate configuration with config plugin (see config plugin for criteria examples)
|
|
ansible.utils.validate:
|
|
data: "{{ lookup('ansible.builtin.file', './backup/eos.config') }}"
|
|
criteria: "{{ lookup('ansible.builtin.file', './validate/criteria/config/eos_config_rules.yaml') }}"
|
|
engine: ansible.utils.config
|
|
"""
|
|
|
|
RETURN = r"""
|
|
msg:
|
|
description:
|
|
- The msg indicates if the I(data) is valid as per the I(criteria).
|
|
- In case data is valid return success message B(all checks passed).
|
|
- In case data is invalid return error message B(Validation errors were found)
|
|
along with more information on error is available.
|
|
returned: always
|
|
type: str
|
|
errors:
|
|
description: The list of errors in I(data) based on the I(criteria).
|
|
returned: when I(data) value is invalid
|
|
type: list
|
|
elements: str
|
|
"""
|