예제 #1
0
def _dp_parser_v1(conf, config_file, logname):
    logger = get_logger(logname)

    config_path = _dp_config_path(config_file)

    # TODO: warn when the configuration contains meaningless elements
    # they are probably typos
    if 'dp_id' not in conf:
        logger.error('dp_id not configured in file %s', config_file)

    dp_id = conf['dp_id']
    dp = DP(dp_id, conf)

    interfaces_conf = conf.pop('interfaces', {})
    vlans_conf = conf.pop('vlans', {})
    acls_conf = conf.pop('acls', {})

    logger.info(str(dp))
    vlans = {}
    for vid, vlan_conf in vlans_conf.iteritems():
        vlans[vid] = VLAN(vid, dp_id, vlan_conf)
    for port_num, port_conf in interfaces_conf.iteritems():
        dp.add_port(port_parser(dp_id, port_num, port_conf, vlans))
    for acl_num, acl_conf in acls_conf.iteritems():
        dp.add_acl(acl_num, acl_conf)
    for vlan in vlans.itervalues():
        dp.add_vlan(vlan)
    try:
        dp.sanity_check()
    except AssertionError as err:
        logger.exception('Error in config file: %s', err)
        return None

    return ({config_path: config_file_hash(config_path)}, [dp])
예제 #2
0
def _dp_parser_v1(conf, config_file, logname):
    logger = get_logger(logname)

    # TODO: warn when the configuration contains meaningless elements
    # they are probably typos
    if 'dp_id' not in conf:
        logger.error('dp_id not configured in file {0}'.format(config_file))

    dp_id = conf['dp_id']
    dp = DP(dp_id, conf)

    interfaces_conf = conf.pop('interfaces', {})
    vlans_conf = conf.pop('vlans', {})
    acls_conf = conf.pop('acls', {})

    logger.info(str(dp))
    vlans = {}
    port = {}
    for vid, vlan_conf in vlans_conf.iteritems():
        vlans[vid] = VLAN(vid, dp_id, vlan_conf)
    for port_num, port_conf in interfaces_conf.iteritems():
        dp.add_port(port_parser(dp_id, port_num, port_conf, vlans))
    for acl_num, acl_conf in acls_conf.iteritems():
        dp.add_acl(acl_num, acl_conf)
    for vlan in vlans.itervalues():
        dp.add_vlan(vlan)
    try:
        dp.sanity_check()
    except AssertionError as err:
        logger.exception("Error in config file: {0}".format(err))
        return None

    return [dp]