validations_libs.community.init_validation module

class validations_libs.community.init_validation.CommunityValidation(validation_name, validation_dir='/usr/share/ansible/validation-playbooks', ansible_base_dir='/usr/share/ansible')[source]

Bases: object

Init Community Validation Role and Playbook Command Class

Initialize a new community role using ansible-galaxy and create a playboook from a template.

create_playbook(content="---\n# This playbook has been generated by the `validation init` CLI.\n#\n# As shown here in this template, the validation playbook requires three\n# top-level directive:\n#   ``hosts``, ``vars -> metadata`` and ``roles``.\n#\n# ``hosts``: specifies which nodes to run the validation on. The options can\n#            be ``all`` (run on all nodes), or you could use the hosts defined\n#            in the inventory.\n# ``vars``: this section serves for storing variables that are going to be\n#           available to the Ansible playbook. The validations API uses the\n#           ``metadata`` section to read each validation's name and description\n#           These values are then reported by the API.\n#\n# The validations can be grouped together by specyfying a ``groups`` metadata.\n# Groups function similar to tags and a validation can thus be part of many\n# groups. To get a full list of the groups available and their description,\n# please run the following command on your Ansible Controller host:\n#\n#    $ validation show group\n#\n# The validations can also be categorized by technical domain and acan belong to\n# one or multiple ``categories``. For example, if your validation checks some\n# networking related configuration, you may want to put ``networking`` as a\n# category.  Note that this section is open and you are free to categorize your\n# validations as you like.\n#\n# The ``products`` section refers to the product on which you would like to run\n# the validation. It's another way to categorized your community validations.\n# Note that, by default, ``community`` is set in the ``products`` section to\n# help you list your validations by filtering by products:\n#\n#    $ validation list --product community\n#\n- hosts: hostname\n  gather_facts: false\n  vars:\n    metadata:\n      name: Brief and general description of the validation\n      description: |\n        The complete description of this validation should be here\n# GROUPS:\n# Run ``validation show group`` to get the list of groups\n# :type group: `list`\n# If you don't want to add groups for your validation, just\n# set an empty list to the groups key\n      groups: []\n# CATEGORIES:\n# :type group: `list`\n# If you don't want to categorize your validation, just\n# set an empty list to the categories key\n      categories: []\n      products:\n        - community\n  roles:\n    - {}\n")[source]

Create the playbook for the new community validation

execute()[source]

Execute the actions necessary to create a new community validation

Check if the role name is compliant with Ansible specification Initializing the new role using ansible-galaxy Creating the validation playbook from a template on disk

Return type:

NoneType

is_community_validations_enabled(base_config)[source]

Checks if the community validations are enabled in the config file

Parameters:

base_config (Dict) – Contents of the configuration file

Return type:

Boolean

is_playbook_exists()[source]

New playbook existence check

This class method checks if the new playbook file is already existing in the official validations catalog and in the current community validations directory.

First, it gets the list of the playbooks yaml file available in constants.ANSIBLE_VALIDATIONS_DIR. If there is a match in at least one of the directories, it returns True, otherwise False.

Return type:

Boolean

is_role_exists()[source]

New role existence check

This class method checks if the new role name is already existing in the official validations catalog and in the current community validations directory.

First, it gets the list of the role names available in constants.ANSIBLE_ROLES_DIR. If there is a match in at least one of the directories, it returns True, otherwise False.

Return type:

Boolean

property is_role_name_compliant

Check if the role name is compliant with Ansible Rules

Roles Name are limited to contain only lowercase alphanumeric characters, plus ‘_’ and start with an alpha character.

Return type:

Boolean

property playbook_basedir

Returns the absolute path of the community playbooks directory

Return type:

pathlib.PosixPath

property playbook_name

Return the new playbook name with the yaml extension

Return type:

str

property playbook_path

Returns the absolute path of the new community playbook yaml file

Return type:

pathlib.PosixPath

property role_basedir

Returns the absolute path of the community validations roles

Return type:

pathlib.PosixPath

property role_dir_path

Returns the community validation role directory name

Return type:

pathlib.PosixPath

property role_name

Returns the community validation role name

Return type:

str