3.0.0 policy-handler - migrated to python 3.6

- migrated from python 2.7 to 3.6
- brought up the latest versions of dependencies
  -- Cherrypy 15.0.0, requests 2.18.4, websocket-client 0.48.0
- fixed migration errors
  -- renamed the standard package Queue to queue
  -- dict.items() instead of dict.iteritems()
  -- dict.keys() instead of dict.viewkeys()
  -- range() instead of xrange()
  -- subprocess.check_output(..., universal_newlines=True) to
     get str instead of byte-stream from stdout
- cleaned up migration warnings
  -- super() instead of super(A, self)
  -- logger.warning() instead of .warn()
- moved main() from policy_handler.py to __main__.py
- getting the policy_handler version directly from setup.py
  instead of the env var on init of the audit

Change-Id: I0fc4ddc51c08a64f3cfdc5d2f010b1c6a1ae92f0
Signed-off-by: Alex Shatov <alexs@att.com>
Issue-ID: DCAEGEN2-515
diff --git a/policyhandler/policy_utils.py b/policyhandler/policy_utils.py
index c96d4f6..c2a8b07 100644
--- a/policyhandler/policy_utils.py
+++ b/policyhandler/policy_utils.py
@@ -134,8 +134,8 @@
         try:
             return json.loads(json_str)
         except (ValueError, TypeError) as err:
-            Utils._logger.warn("unexpected json error(%s): len(%s) str[:100]: (%s)",
-                               str(err), len(json_str), str(json_str)[:100])
+            Utils._logger.warning("unexpected json error(%s): len(%s) str[:100]: (%s)",
+                                  str(err), len(json_str), str(json_str)[:100])
         return json_str
 
     @staticmethod
@@ -159,11 +159,11 @@
             return True
 
         if isinstance(body_1, dict) and isinstance(body_2, dict):
-            if body_1.viewkeys() ^ body_2.viewkeys():
+            if body_1.keys() ^ body_2.keys():
                 Utils._logger.debug("keys %s != %s", json.dumps(body_1), json.dumps(body_2))
                 return False
 
-            for key, val_1 in body_1.iteritems():
+            for key, val_1 in body_1.items():
                 if not Utils.are_the_same(val_1, body_2[key]):
                     return False
             return True