Fix warnings reported by gen_doc.sh
[csit.git] / resources / libraries / python / parsers / JsonParser.py
index 1d17767..2c8e62f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2018 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Used to parse Json files or Json data strings to dictionaries"""
+"""Used to parse JSON files or JSON data strings to dictionaries"""
 
 import json
+from os import uname
 
 
 class JsonParser(object):
-    """Parses Json data string or files containing Json data strings"""
+    """Parses JSON data string or files containing JSON data strings"""
     def __init__(self):
         pass
 
     @staticmethod
     def parse_data(json_data):
-        """Return list parsed from json data string.
+        """Return list parsed from JSON data string.
 
-        Translates json data into list of values/dictionaries/lists
-        :param json_data: data in json format
-        :return: json data parsed as python list
+        Translates JSON data into list of values/dictionaries/lists.
+
+        :param json_data: Data in JSON format.
+        :type json_data: str
+        :returns: JSON data parsed as python list.
+        :rtype: list
         """
+        if "4.2.0-42-generic" in uname():
+            # TODO: remove ugly workaround
+            # On Ubuntu14.04 the VAT console returns "error:misc" even after
+            # some commands execute correctly. This causes problems
+            # with parsing JSON data.
+            known_errors = ["sw_interface_dump error: Misc",
+                            "lisp_eid_table_dump error: Misc",
+                            "show_lisp_status error: Misc",
+                            "lisp_map_resolver_dump error: Misc",
+                            "show_lisp_pitr error: Misc",
+                            "snat_static_mapping_dump error: Misc",
+                           ]
+            for item in known_errors:
+                if item in json_data:
+                    json_data = json_data.replace(item, "")
+                    print("Removing API error: *{0}* "
+                          "from JSON output.".format(item))
         parsed_data = json.loads(json_data)
         return parsed_data
 
-    def parse_file(self, json_file):
-        """Return list parsed from file containing json string.
+    @staticmethod
+    def parse_file(json_file):
+        """Return list parsed from file containing JSON string.
+
+        Translates JSON data found in file into list of
+        values/dictionaries/lists.
 
-        Translates json data found in file into list of
-        values/dictionaries/lists
-        :param json_file: file with json type data
-        :return: json data parsed as python list
+        :param json_file: File with JSON type data.
+        :type json_file: str
+        :returns: JSON data parsed as python list.
+        :rtype: list
         """
         input_data = open(json_file).read()
-        parsed_data = self.parse_data(input_data)
+        parsed_data = JsonParser.parse_data(input_data)
         return parsed_data