Migrating to Python v3

 - support for Python v3.8.x
 - support for Python v3.5.x
 - new tag, 2019.2.8
 - updates class generation and iterators
 - unittests updated with coverage >75%
 - new coverage routines
 - unittests profiling
 - full fake data for unittests
 - unittest testrun is ~1.5 seconds long

Bugfixes
 - 34834, proper use of 'sudo' option
 - multiple proper iterator use
 - 37919, show warning when installed and candidate versions
   are newer comparing to release version

Change-Id: Idd6b889f7ce94ae0c832e2f0a0346e4fdc3264a3
Related-PROD: PROD-34834 PROD-34664 PROD-34919
diff --git a/cfg_checker/modules/network/pinger.py b/cfg_checker/modules/network/pinger.py
index 266727b..0500284 100644
--- a/cfg_checker/modules/network/pinger.py
+++ b/cfg_checker/modules/network/pinger.py
@@ -44,7 +44,7 @@
     def ping_nodes(self, network_cidr_str):
         # Conduct actual ping using network CIDR
         logger_cli.info("# Collecting node pairs")
-        _fake_if = ipaddress.IPv4Interface(unicode(network_cidr_str))
+        _fake_if = ipaddress.IPv4Interface(str(network_cidr_str))
         _net = _fake_if.network
         # collect nodes and ips from reclass
         nodes = self._collect_node_addresses(_net)
@@ -69,7 +69,7 @@
                 "targets": {}
             }
 
-            for tgt_host, tgt_data in nodes.iteritems():
+            for tgt_host, tgt_data in nodes.items():
                 _t = _packets[src_host]["targets"]
                 for tgt_if in tgt_data:
                     tgt_if_name = tgt_if['name']
@@ -110,7 +110,7 @@
         _progress = Progress(_count)
         _progress_index = 0
         _node_index = 0
-        for src, src_data in _packets.iteritems():
+        for src, src_data in _packets.items():
             _targets = src_data["targets"]
             _node_index += 1
             # create 'targets.json' on source host
@@ -154,7 +154,7 @@
                 )
                 continue
             # Handle return codes
-            for tgt_node, _tgt_ips in _result.iteritems():
+            for tgt_node, _tgt_ips in _result.items():
                 for _params in _tgt_ips:
                     _body = "{}({}) --{}--> {}({}@{})\n".format(
                             src,