#!/usr/bin/python
# Copyright 2017, Cumulus Networks, Inc.  All rights reserved.
#
# generate-backend-config
#
# combine generated configuration files into a single file for hardware configuration
#
# Broadcom chips: creates /etc/bcm.d/config.bcm
#

import os
import time
import sys
import argparse
import subprocess
import cumulus.platforms

class ArgParseError(RuntimeError):
    pass

########################################################################
#
# MAIN
#
# Parses arguments, reads hardware values, calculates egress interface
#
########################################################################
if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='Update Cumulus port configuration based on /etc/cumulus/ports.conf')
    parser.add_argument('-v', '--verbose',
                        required=False,
                        action='store_true',
                        help='Verbose output')
    try:
        args = parser.parse_args()
    except ArgParseError, e:
        parser.error(str(e))

    if cumulus.platforms.probe().switch.chip.sw_base == 'bcm':
        autogen = ('# Automatically generated by %s.\n# %s\n# Do not edit.\n' %
                   (sys.argv[0], time.asctime()))

        if args.verbose:
            sys.stdout.write('write /etc/bcm.d/config.bcm\n')
        configbcm = open('/etc/bcm.d/config.bcm', 'w')
        configbcm.write(autogen)
        for f in sorted(os.listdir('/etc/bcm.d/config.d')):
            cfg = os.path.join('/etc/bcm.d/config.d/', f)
            if os.path.isfile(cfg):
                if args.verbose:
                    sys.stdout.write('  appending %s\n' % cfg)
                configbcm.write(open(cfg, 'r').read())
