#!/usr/bin/python
#
# Copyright (C) 2017,2018 Cumulus Networks, Inc. all rights reserved
#
# This software is subject to the Cumulus Networks End User License
# Agreement available at the following locations:
#
# Internet: https://cumulusnetworks.com/downloads/eula/latest/view/
# Cumulus Linux systems: /usr/share/cumulus/EULA.txt
#
# validate-ports --
#
#     Validate a ports.conf file (/etc/cumulus/ports.conf by default) for
#     correctness.
#
import os
import sys
import argparse

import cumulus.portvalidator

class ArgParseError(RuntimeError):
    pass

# ----------------------------------------------------------
#
#                         m a i n
#
# ----------------------------------------------------------
def main(argv) :
    parser = argparse.ArgumentParser(
        description='Validate Cumulus ports.conf configuration')
    parser.add_argument('-f', '--file',
                        dest="file",
                        required=False,
                        action='store',
                        help='Supply alternate path for ports.conf.',
                        default="/etc/cumulus/ports.conf")
    parser.add_argument('-d', '--debug',
                        required=False,
                        action='store_true',
                        help=argparse.SUPPRESS,
                        default=False)

    try:
        args = parser.parse_args()
    except ArgParseError, e:
        parser.error(str(e))
        exit(-1)

    pv = cumulus.portvalidator.Portvalidator(args.file, args.debug)
    retlist = pv.portvalidator()

    if len(retlist) > 0:
        pv.portwriteerrors(retlist)

    exit(len(retlist) > 0)

# ----------------------------------------------------------
#
#                         e n t r y
#
# ----------------------------------------------------------
if __name__ == "__main__":
    main(sys.argv[1:])
