X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fparsers%2FJsonParser.py;h=2c8e62ffe33f4b3859be95076eebfa4060a296f5;hp=1d177670fffd26834bf22e74a647659bbdafb62a;hb=4c6fe5602edcbd9857a846e5b13a21d5c671a2c8;hpb=33499c81c94c2d3baef9d3e9f061cd76ef86fa74 diff --git a/resources/libraries/python/parsers/JsonParser.py b/resources/libraries/python/parsers/JsonParser.py index 1d177670ff..2c8e62ffe3 100644 --- a/resources/libraries/python/parsers/JsonParser.py +++ b/resources/libraries/python/parsers/JsonParser.py @@ -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: @@ -11,35 +11,60 @@ # 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