Skip nodes functionality for Package and Network modules
Added to main entrypoint
- Skip nodes using simple argument with '*' as a trailing wildcard
- Skip nodes using file list
Usability improovement
- Node list preview in status line
- Node stats alignment in net report
Minor fixes:
- Python version detection (3.5+)
- Node counter for each status
- Proper node skip handling
Change-Id: I086ef501bc06f0e739df25349257f1c63a2e2fcf
Related-PROD: PROD-35009
diff --git a/cfg_checker/modules/packages/__init__.py b/cfg_checker/modules/packages/__init__.py
index 41dfca1..2d0cc79 100644
--- a/cfg_checker/modules/packages/__init__.py
+++ b/cfg_checker/modules/packages/__init__.py
@@ -112,9 +112,12 @@
_kw = [args.exclude_keywords]
# init connection to salt and collect minion data
+ _skip, _skip_file = args_utils.get_skip_args(args)
pChecker = checker.CloudPackageChecker(
force_tag=args.force_tag,
- exclude_keywords=_kw
+ exclude_keywords=_kw,
+ skip_list=_skip,
+ skip_list_file=_skip_file
)
# collect data on installed packages
pChecker.collect_installed_packages()
diff --git a/cfg_checker/modules/packages/checker.py b/cfg_checker/modules/packages/checker.py
index 8f30f3c..fb02db2 100644
--- a/cfg_checker/modules/packages/checker.py
+++ b/cfg_checker/modules/packages/checker.py
@@ -12,10 +12,19 @@
class CloudPackageChecker(object):
- def __init__(self, force_tag=None, exclude_keywords=[]):
+ def __init__(
+ self,
+ force_tag=None,
+ exclude_keywords=[],
+ skip_list=None,
+ skip_list_file=None
+ ):
# Init salt master info
if not salt_master.nodes:
- salt_master.nodes = salt_master.get_nodes()
+ salt_master.nodes = salt_master.get_nodes(
+ skip_list=skip_list,
+ skip_list_file=skip_list_file
+ )
# check that this env tag is present in Manager
self.rm = RepoManager()
@@ -57,6 +66,7 @@
_data['status_err'] = const.VERSION_ERR
_data['status_warn'] = const.VERSION_WARN
_data['status_down'] = const.VERSION_DOWN
+ _data['status_skip'] = const.VERSION_NA
# Presort packages
_data['critical'] = {}