Multi env support and Kube client integration

Kube friendly Beta

Package versions supports Kube env

Added:
  - Env type detection
  - New option: --use-env, for selecting env
    when function supports multiple detected envs
  - Updated config loading
  - Each module and command type has supported env check
    and stops execution if it is on unsupported env
  - Functions can support multiple envs
  - Kubernetes dependency
  - Kubenernetes API detection: local and remote
  - Package checking class hierachy for using Salt or Kube
  - Remote pod execution routine
  - Flexible SSH/SSH Forwarder classes: with, ssh,do(), etc
  - Multithreaded SSH script execution
  - Number of workers parameter, default 5

Fixed:
  - Config dependency
  - Command loading with supported envs list
  - Unittests structure and execution flow updated
  - Unittests fixes
  - Fixed debug mode handling
  - Unified command type/support routine
  - Nested attrs getter/setter

Change-Id: I3ade693ac21536e2b5dcee4b24d511749dc72759
Related-PROD: PROD-35811
diff --git a/cfg_checker/common/const.py b/cfg_checker/common/const.py
index 3b17099..2ae41f6 100644
--- a/cfg_checker/common/const.py
+++ b/cfg_checker/common/const.py
@@ -54,7 +54,10 @@
 
 uknown_code = "unk"
 
-all_roles_map = {
+ENV_TYPE_KUBE = "salt"
+ENV_TYPE_KUBE = "kube"
+
+all_salt_roles_map = {
     "apt": "repository",
     "bmk": "validation",
     "cfg": "master",
@@ -98,3 +101,38 @@
 _mainteiners_index_filename = "mainteiners.json"
 _mirantis_versions_filename = "mirantis_v.json"
 _other_versions_filename = "other_v.json"
+
+all_kube_roles_map = {
+    'node-role.kubernetes.io/master': "k8s-master",
+    'openstack-compute-node': "os-cmp",
+    'openstack-control-plane': "os-ctl",
+    'openstack-gateway': "os-gtw",
+    'openvswitch': "ovs",
+    'local-volume-provisioner': "",
+    'ceph_role_mgr': "ceph-mgr",
+    'ceph_role_mon': "ceph-mon",
+    'com.docker.ucp.collection.shared': "ucp-shared",
+    'com.docker.ucp.collection.system': "ucp-system",
+    'com.docker.ucp.collection.swarm': "ucp-swarm",
+    'com.docker.ucp.collection.root': "ucp-root",
+}
+
+truth = ['true', '1', 't', 'y', 'yes', 'yeah', 'yup', 'certainly', 'uh-huh']
+
+ubuntu_versions = {
+    "20.10": "Groovy Gorilla",
+    "20.04": "Focal Fossa",
+    "18.04": "Bionic Beaver",
+    "16.04": "Xenial Xerus",
+    "14.04": "Trusty Tahr",
+}
+
+nova_openstack_versions = {
+    "23": "wallaby",
+    "22": "victoria",
+    "21": "ussuri",
+    "20": "train",
+    "19": "stein",
+    "18": "rocky",
+    "17": "queens"
+}