validations_libs.validation module¶
- class validations_libs.validation.Validation(validation_path)[source]¶
Bases:
object
An object for encapsulating a validation
Each validation is an Ansible playbook. Each playbook have some
metadata
. Here is what a minimal validation would look like:- hosts: webserver vars: metadata: name: Hello World description: This validation prints Hello World! roles: - hello_world
As shown here, the validation playbook requires three top-level directives:
hosts
,vars -> metadata
androles
hosts
specify which nodes to run the validation on.The
vars
section serves for storing variables that are going to be available to the Ansible playbook. The validations API uses themetadata
section to read validation’s name and description. These values are then reported by the API.The validations can be grouped together by specifying a
groups
, acategories
and aproducts
metadata.groups
are the deployment stage the validations should run on,categories
are the technical classification for the validations andproducts
are the specific validations which should be executed against a specific product.Groups, Categories and Products function similar to tags and a validation can thus be part of many groups and many categories.
Here is an example:
- hosts: webserver vars: metadata: name: Hello World description: This validation prints Hello World! groups: - pre-deployment - hardware categories: - os - networking - storage - security products: - product1 - product2 roles: - hello_world
- property categories¶
Get the validation list of categories
- Returns
A list of categories for the validation
- Return type
list or None if no metadata has been found
- Raise
A NameError exception if no metadata has been found in the playbook
- Example
>>> pl = '/foo/bar/val.yaml' >>> val = Validation(pl) >>> print(val.categories) ['category1', 'category2']
- property get_data¶
Get the full contents of a validation playbook
- Returns
The full content of the playbook
- Return type
dict
- Example
>>> pl = '/foo/bar/val.yaml' >>> val = Validation(pl) >>> print(val.get_data) {'gather_facts': True, 'hosts': 'all', 'roles': ['val_role'], 'vars': {'metadata': {'description': 'description of val ', 'groups': ['group1', 'group2'], 'categories': ['category1', 'category2'], 'products': ['product1', 'product2'], 'name': 'validation one'}, 'var_name1': 'value1'}}
- property get_formated_data¶
Get basic information from a validation for output display
- Returns
Basic information of a validation including the Description, the list of ‘Categories’, the list of Groups, the ID and the Name.
- Return type
dict
- Raise
A NameError exception if no metadata has been found in the playbook
- Example
>>> pl = '/foo/bar/val.yaml' >>> val = Validation(pl) >>> print(val.get_formated_data) {'Categories': ['category1', 'category2'], 'Products': ['product1', 'product2'], 'Description': 'description of val', 'Groups': ['group1', 'group2'], 'ID': 'val', 'Name': 'validation one', 'path': '/tmp/foo/'}
- property get_id¶
Get the validation id
- Returns
The validation id
- Return type
string
- Example
>>> pl = '/foo/bar/check-cpu.yaml' >>> val = Validation(pl) >>> print(val.id) 'check-cpu'
- property get_metadata¶
Get the metadata of a validation
- Returns
The validation metadata
- Return type
dict or None if no metadata has been found
- Raise
A NameError exception if no metadata has been found in the playbook
- Example
>>> pl = '/foo/bar/val1.yaml' >>> val = Validation(pl) >>> print(val.get_metadata) {'description': 'Val1 desc.', 'groups': ['group1', 'group2'], 'categories': ['category1', 'category2'], 'products': ['product1', 'product2'], 'id': 'val1', 'name': 'The validation val1's name', 'path': '/tmp/foo/'}
- property get_ordered_dict¶
Get the full ordered content of a validation
- Returns
An OrderedDict with the full data of a validation
- Return type
OrderedDict
- property get_vars¶
Get only the variables of a validation
- Returns
All the variables belonging to a validation
- Return type
dict or None if no metadata has been found
- Raise
A NameError exception if no metadata has been found in the playbook
- Example
>>> pl = '/foo/bar/val.yaml' >>> val = Validation(pl) >>> print(val.get_vars) {'var_name1': 'value1', 'var_name2': 'value2'}
- property groups¶
Get the validation list of groups
- Returns
A list of groups for the validation
- Return type
list or None if no metadata has been found
- Raise
A NameError exception if no metadata has been found in the playbook
- Example
>>> pl = '/foo/bar/val.yaml' >>> val = Validation(pl) >>> print(val.groups) ['group1', 'group2']
- property has_metadata_dict¶
Check the presence of the metadata dictionary
- hosts: webserver vars: metadata: <==== name: hello world description: this validation prints hello world! groups: - pre-deployment - hardware categories: - os - networking - storage - security products: - product1 - product2 roles: - hello_world
- Returns
true if vars and metadata are found, false if not.
- Return type
boolean
- property has_vars_dict¶
Check the presence of the vars dictionary
- hosts: webserver vars: <==== metadata: name: hello world description: this validation prints hello world! groups: - pre-deployment - hardware categories: - os - networking - storage - security products: - product1 - product2 roles: - hello_world
- Returns
true if vars is found, false if not.
- Return type
boolean
- property products¶
Get the validation list of products
- Returns
A list of products for the validation
- Return type
list or None if no metadata has been found
- Raise
A NameError exception if no metadata has been found in the playbook
- Example
>>> pl = '/foo/bar/val.yaml' >>> val = Validation(pl) >>> print(val.products) ['product1', 'product2']