validations_libs.utils module¶
- validations_libs.utils.check_community_validations_dir(basedir=PosixPath('/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/community-validations'), subdirs=[PosixPath('/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/community-validations/roles'), PosixPath('/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/community-validations/playbooks'), PosixPath('/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/community-validations/library'), PosixPath('/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/community-validations/lookup_plugins')])[source]¶
Check presence of the community validations directory structure
The community validations are stored and located in:
/home/<username>/community-validations ├── library ├── lookup_plugins ├── playbooks └── roles
This function checks for the presence of the community-validations directory in the $HOME of the user running the validation CLI. If the primary directory doesn’t exist, this function will create it and will check if the four subdirectories are present and will create them otherwise.
- Parameters
basedir (
pathlib.PosixPath
) – Absolute path of the community validationssubdirs (
list
ofpathlib.PosixPath
) – List of Absolute path of the community validations subdirs
- Return type
NoneType
- validations_libs.utils.community_validations_on(validation_config)[source]¶
Check for flag for community validations to be enabled The default value is true
- Parameters
validation_config (
dict
) – A dictionary of configuration for Validation loaded from an validation.cfg file.- Returns
A boolean with the status of community validations flag
- Return type
bool
- validations_libs.utils.create_artifacts_dir(log_path='/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/validations', prefix='')[source]¶
Create Ansible artifacts directory for the validation run :param log_path: Directory asbolute path :type log_path: string :param prefix: Playbook name :type prefix: string :return: UUID of the validation run, absolute path of the validation artifacts directory :rtype: string, string
- validations_libs.utils.create_log_dir(log_path='/home/zuul/src/opendev.org/openstack/validations-libs/.tox/docs/validations')[source]¶
Check for presence of the selected validations log dir. Create the directory if needed, and use fallback if that proves too tall an order.
Log the failure if encountering OSError or PermissionError.
- Parameters
log_path (string) – path of the selected log directory
- Returns
valid path to the log directory
- Return type
string
- Raises
RuntimeError if even the fallback proves unavailable.
- validations_libs.utils.find_config_file(config_file_name='validation.cfg')[source]¶
Find the config file for Validation in the following order: * environment validation VALIDATION_CONFIG * current user directory * user home directory * Python prefix path which has been used for the installation * /etc/validation.cfg
- validations_libs.utils.get_validation_group_name_list(groups_path=None)[source]¶
Get the validation group name list only
- Params groups_path
The path the groups.yaml file
- Returns
The group name list
- Return type
list
- Example
>>> get_validation_group_name_list() ['group1', 'group2', 'group3', 'group4']
- validations_libs.utils.get_validation_parameters(validation)[source]¶
Return dictionary of parameters
- validations_libs.utils.get_validations_data(validation, path='/usr/share/ansible/validation-playbooks', validation_config=None)[source]¶
Return validation data with format:
ID, Name, Description, Groups, Parameters
- Parameters
validation (string) – Name of the validation without the yaml extension. Defaults to constants.ANSIBLE_VALIDATION_DIR
path (string) – The path to the validations directory
validation_config (
dict
) – A dictionary of configuration for Validation loaded from an validation.cfg file.
- Returns
The validation data with the format (ID, Name, Description, Groups, Parameters)
- Return type
dict
- Example
>>> validation = 'check-something' >>> get_validations_data(validation) {'Description': 'Verify that the server has enough something', 'Groups': ['group1', 'group2'], 'Categories': ['category1', 'category2'], 'products': ['product1', 'product2'], 'ID': 'check-something', 'Name': 'Verify the server fits the something requirements', 'Parameters': {'param1': 24}}
- validations_libs.utils.get_validations_parameters(validations_data, validation_name=None, groups=None, categories=None, products=None)[source]¶
Return parameters for a list of validations
- Parameters
validations_data (list) – A list of absolute validations playbooks path
validation_name (list) – A list of validation name
groups (list) – A list of validation groups
categories (list) – A list of validation categories
products (list) – A list of validation products
- Returns
a dictionary containing the current parameters for each validation_name or groups
- Return type
dict
- Example
>>> validations_data = ['/foo/bar/check-ram.yaml', '/foo/bar/check-cpu.yaml'] >>> validation_name = ['check-ram', 'check-cpu'] >>> get_validations_parameters(validations_data, validation_name) {'check-cpu': {'parameters': {'minimal_cpu_count': 8}}, 'check-ram': {'parameters': {'minimal_ram_gb': 24}}}
- validations_libs.utils.get_validations_playbook(path, validation_id=None, groups=None, categories=None, products=None, validation_config=None)[source]¶
Get a list of validations playbooks paths either by their names, their groups, by their categories or by their products.
- Parameters
path (string) – Path of the validations playbooks
validation_id (list) – List of validation name
groups (list) – List of validation group
categories (list) – List of validation category
products (list) – List of validation product
validation_config (
dict
) – A dictionary of configuration for Validation loaded from an validation.cfg file.
- Returns
A list of absolute validations playbooks path
- Return type
list
- Example
>>> path = '/usr/share/validation-playbooks' >>> validation_id = ['512e','check-cpu'] >>> groups = None >>> categories = None >>> products = None >>> get_validations_playbook(path=path, validation_id=validation_id, groups=groups, categories=categories, products=products) ['/usr/share/ansible/validation-playbooks/512e.yaml', '/usr/share/ansible/validation-playbooks/check-cpu.yaml',]
- validations_libs.utils.parse_all_validations_on_disk(path, groups=None, categories=None, products=None, validation_config=None)[source]¶
Return a list of validations metadata which can be sorted by Groups, by Categories or by Products.
- Parameters
path (string) – The absolute path of the validations directory
groups (list) – Groups of validations
categories (list) – Categories of validations
products (list) – Products of validations
validation_config (
dict
) – A dictionary of configuration for Validation loaded from an validation.cfg file.
- Returns
A list of validations metadata.
- Return type
list
- Example
>>> path = '/foo/bar' >>> parse_all_validations_on_disk(path) [{'categories': ['storage'], 'products': ['product1'], 'description': 'Detect whether the node disks use Advanced Format.', 'groups': ['prep', 'pre-deployment'], 'id': '512e', 'name': 'Advanced Format 512e Support'}, {'categories': ['system'], 'products': ['product1'], 'description': 'Make sure that the server has enough CPU cores.', 'groups': ['prep', 'pre-introspection'], 'id': 'check-cpu', 'name': 'Verify if the server fits the CPU core requirements'}]
- validations_libs.utils.read_validation_groups_file(groups_path=None)[source]¶
Load groups.yaml file and return a dictionary with its contents
- Params groups_path
The path the groups.yaml file
- Returns
The group list with their descriptions
- Return type
dict
- Example
>>> read_validation_groups_file() {'group1': [{'description': 'Group1 description.'}], 'group2': [{'description': 'Group2 description.'}]}
- validations_libs.utils.run_command_and_log(log, cmd, cwd=None, env=None, retcode_only=True)[source]¶
Run command and log output
- Parameters
log (Logger) – Logger instance for logging
cmd (
String
) – Command to run in list formcwd – Current working directory for execution
env (
List
) – Modified environment for command runretcode_only – Returns only retcode instead or proc object