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/scripts/pkg_versions.py b/scripts/pkg_versions.py
index 66a46aa..ae76833 100644
--- a/scripts/pkg_versions.py
+++ b/scripts/pkg_versions.py
@@ -7,7 +7,8 @@
 def shell(command):
     _ps = subprocess.Popen(
         command.split(),
-        stdout=subprocess.PIPE
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE
     ).communicate()[0].decode()
 
     return _ps
@@ -50,4 +51,7 @@
     pkgs[_pkg]['raw'] = res[3]
 
 buff = json.dumps(pkgs)
-sys.stdout.write(buff)
+if len(sys.argv) > 1 and sys.argv[1] == 'stdout':
+    sys.stdout.write(buff)
+else:
+    print(buff)