X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fpresentation%2Fpal.py;h=d06cadaf99e8d2c4479bffa34c915a9ed4eeb154;hp=7e2d9a8dbd37e811e8a4602121e82e6b0e0c5675;hb=HEAD;hpb=c763cfcb064e4f4acf6b8309b08d3800b9bd5331 diff --git a/resources/tools/presentation/pal.py b/resources/tools/presentation/pal.py deleted file mode 100644 index 7e2d9a8dbd..0000000000 --- a/resources/tools/presentation/pal.py +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright (c) 2021 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: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""CSIT Presentation and Analytics Layer. -""" - -import sys -import argparse -import logging - -from pal_errors import PresentationError -from specification_parser import Specification -from environment import Environment, clean_environment -from static_content import prepare_static_content -from input_data_parser import InputData -from generator_tables import generate_tables -from generator_plots import generate_plots -from generator_files import generate_files -from generator_report import generate_report -from generator_cpta import generate_cpta -from generator_alerts import Alerting, AlertingError -from convert_xml_json import convert_xml_to_json - - -OUTPUTS = (u"none", u"report", u"trending", u"convert-xml-to-json") - - -def parse_args(): - """Parse arguments from cmd line. - - :returns: Parsed arguments. - :rtype: ArgumentParser - """ - - parser = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawDescriptionHelpFormatter - ) - parser.add_argument( - u"-s", u"--specification", - required=True, - type=str, - help=u"Specification YAML file." - ) - parser.add_argument( - u"-r", u"--release", - default=u"master", - type=str, - help=u"Release string of the product." - ) - parser.add_argument( - u"-w", u"--week", - default=u"1", - type=str, - help=u"Calendar week when the report is published." - ) - parser.add_argument( - u"-l", u"--logging", - choices=[ - u"NOTSET", u"DEBUG", u"INFO", u"WARNING", u"ERROR", u"CRITICAL" - ], - default=u"ERROR", - help=u"Logging level." - ) - parser.add_argument( - u"-f", u"--force", - action=u"store_true", - help=u"Force removing the old build(s) if present." - ) - parser.add_argument( - u"-o", u"--print-all-oper-data", - action=u"store_true", - help=u"Print all operational data to console. Be careful, the output " - u"can be really long." - ) - parser.add_argument( - u"-i", u"--input-file", - type=str, - default=u"", - help=u"XML file generated by RobotFramework which will be processed " - u"instead of downloading the data from Nexus and/or Jenkins. In " - u"this case, the section 'input' in the specification file is " - u"ignored." - ) - parser.add_argument( - u"-d", u"--input-directory", - type=str, - default=u"", - help=u"Directory with XML file(s) generated by RobotFramework or with " - u"sub-directories with XML file(s) which will be processed " - u"instead of downloading the data from Nexus and/or Jenkins. In " - u"this case, the section 'input' in the specification file is " - u"ignored." - ) - - return parser.parse_args() - - -def main(): - """Main function.""" - - log_levels = { - u"NOTSET": logging.NOTSET, - u"DEBUG": logging.DEBUG, - u"INFO": logging.INFO, - u"WARNING": logging.WARNING, - u"ERROR": logging.ERROR, - u"CRITICAL": logging.CRITICAL - } - - args = parse_args() - logging.basicConfig( - format=u"%(asctime)s: %(levelname)s: %(message)s", - datefmt=u"%Y/%m/%d %H:%M:%S", - level=log_levels[args.logging] - ) - - logging.info(u"Application started.") - - try: - spec = Specification(args.specification) - spec.read_specification() - except PresentationError as err: - logging.critical(u"Finished with error.") - logging.critical(repr(err)) - return 1 - - if spec.output[u"output"] not in OUTPUTS: - logging.critical( - f"The output {spec.output[u'output']} is not supported." - ) - return 1 - - return_code = 1 - try: - env = Environment(spec.environment, args.force) - env.set_environment() - - prepare_static_content(spec) - - data = InputData(spec) - if args.input_file: - data.process_local_file(args.input_file) - elif args.input_directory: - data.process_local_directory(args.input_directory) - else: - data.download_and_parse_data(repeat=1) - - if args.print_all_oper_data: - data.print_all_oper_data() - - generate_tables(spec, data) - generate_plots(spec, data) - generate_files(spec, data) - - if spec.output[u"output"] == u"report": - generate_report(args.release, spec, args.week) - elif spec.output[u"output"] == u"trending": - sys.stdout.write(generate_cpta(spec, data)) - try: - alert = Alerting(spec) - alert.generate_alerts() - except AlertingError as err: - logging.warning(repr(err)) - elif spec.output[u"output"] == u"convert-xml-to-json": - convert_xml_to_json(spec, data) - else: - logging.info("No output will be generated.") - - logging.info(u"Successfully finished.") - return_code = 0 - - except AlertingError as err: - logging.critical(f"Finished with an alerting error.\n{repr(err)}") - except PresentationError as err: - logging.critical(f"Finished with a PAL error.\n{str(err)}") - except (KeyError, ValueError) as err: - logging.critical(f"Finished with an error.\n{repr(err)}") - finally: - if spec is not None: - clean_environment(spec.environment) - return return_code - - -if __name__ == u"__main__": - sys.exit(main())