-# 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:
"""Used to parse JSON files or JSON data strings to dictionaries"""
import json
+from os import uname
class JsonParser(object):
:param json_data: Data in JSON format.
:type json_data: str
- :return: JSON data parsed as python list.
+ :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
:param json_file: File with JSON type data.
:type json_file: str
- :return: JSON data parsed as python list.
+ :returns: JSON data parsed as python list.
:rtype: list
"""
input_data = open(json_file).read()