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])
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]