def build_l2_evpn_interface_config(self, interfaces_config, interfaces, vn=None): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf = Interface(name=ifd_name) interfaces_config.add_interface(intf) if interface_list[0].is_untagged(): if (len(interface_list) > 1): self._logger.error( "invalid logical interfaces config for ifd %s" % (ifd_name)) continue intf.set_encapsulation("ethernet-bridge") intf.add_unit( Unit(name=interface_list[0].unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, False), family=Family(bridge=''))) else: intf.set_flexible_vlan_tagging('') intf.set_encapsulation("flexible-ethernet-services") for interface in interface_list: intf.add_unit( Unit(name=interface.unit, comment=DMUtils.l2_evpn_intf_unit_comment( vn, True, interface.vlan_tag), encapsulation='vlan-bridge', vlan_id=str(interface.vlan_tag)))
def build_l2_evpn_interface_config(self, interfaces_config, interfaces, vn, vlan_conf): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf = Interface(name=ifd_name) interfaces_config.add_interface(intf) intf.set_flexible_vlan_tagging('') intf.set_encapsulation("extended-vlan-bridge") if interface_list[0].is_untagged(): if (len(interface_list) > 1): self._logger.error( "invalid logical interfaces config for ifd %s" % ( ifd_name)) continue intf.add_unit(Unit(name=interface_list[0].unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, False), vlan_id="4094")) vlan_conf.add_interface(Interface(name=ifd_name + ".0")) else: for interface in interface_list: intf.add_unit(Unit(name=interface.unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, True, interface.vlan_tag), vlan_id=str(interface.vlan_tag))) vlan_conf.add_interface(Interface(name=ifd_name + "." + str(interface.vlan_tag)))
def build_l2_evpn_interface_config(self, interfaces_config, interfaces, vn, vlan_conf): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf = Interface(name=ifd_name) interfaces_config.add_interface(intf) intf.set_flexible_vlan_tagging('') intf.set_encapsulation("extended-vlan-bridge") if interface_list[0].is_untagged(): if (len(interface_list) > 1): self._logger.error( "invalid logical interfaces config for ifd %s" % ( ifd_name)) continue intf.add_unit(Unit(name=interface_list[0].unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, False), vlan_id="4094")) vlan_conf.add_interface(Interface(name=ifd_name + ".0")) else: for interface in interface_list: intf.add_unit(Unit(name=interface.unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, True, interface.vlan_tag), vlan_id=str(interface.vlan_tag))) vlan_conf.add_interface(Interface(name=ifd_name + "." + str(interface.vlan_tag)))
def build_l2_evpn_interface_config(self, interfaces_config, interfaces, vn=None): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf = Interface(name=ifd_name) interfaces_config.add_interface(intf) if interface_list[0].is_untagged(): if (len(interface_list) > 1): self._logger.error( "invalid logical interfaces config for ifd %s" % ( ifd_name)) continue intf.set_encapsulation("ethernet-bridge") intf.add_unit(Unit(name=interface_list[0].unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, False), family=Family(bridge=''))) else: intf.set_flexible_vlan_tagging('') intf.set_encapsulation("flexible-ethernet-services") for interface in interface_list: intf.add_unit(Unit(name=interface.unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, True, interface.vlan_tag), encapsulation='vlan-bridge', vlan_id=str(interface.vlan_tag)))
def _build_l2_evpn_interface_config(self, interfaces, vn, vlan): interface_map = OrderedDict() for interface in interfaces: interface_map.setdefault(interface.pi_name, []).append(interface) for pi_name, interface_list in interface_map.items(): if len(interface_list) > 1 and \ any(int(intf.vlan_tag) == 0 for intf in interface_list): self._logger.error( "Invalid logical interface config for PI %s" % pi_name) continue _, li_map = self._add_or_lookup_pi(self.pi_map, pi_name) for interface in interface_list: is_tagged = int(interface.vlan_tag) != 0 unit = self._add_or_lookup_li(li_map, interface.li_name, interface.unit) unit.set_comment( DMUtils.l2_evpn_intf_unit_comment(vn, is_tagged, interface.vlan_tag)) unit.set_is_tagged(is_tagged) unit.set_vlan_tag( str(interface.vlan_tag) if is_tagged else '4094') if vlan: self._add_ref_to_list(vlan.get_interfaces(), interface.li_name)
def build_l2_evpn_interface_config(self, interfaces_config, interfaces, vn, vlan_conf): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf = PhysicalInterface(name=ifd_name) interfaces_config.append(intf) if interface_list[0].is_untagged(): if len(interface_list) > 1: self._logger.error( "invalid logical interfaces config for ifd %s" % (ifd_name)) continue unit_name = ifd_name + "." + str(interface_list[0].unit) unit = LogicalInterface( name=unit_name, unit=interface_list[0].unit, comment=DMUtils.l2_evpn_intf_unit_comment(vn, False), is_tagged=False, vlan_tag="4094") # attach acls self.attach_acls(interface_list[0], unit) intf.add_logical_interfaces(unit) if vlan_conf: vlan_conf.add_interfaces(LogicalInterface(name=unit_name)) else: for interface in interface_list: unit_name = ifd_name + "." + str(interface.unit) unit = LogicalInterface( name=unit_name, unit=interface.unit, comment=DMUtils.l2_evpn_intf_unit_comment( vn, True, interface.vlan_tag), is_tagged=True, vlan_tag=str(interface.vlan_tag)) # attach acls self.attach_acls(interface, unit) intf.add_logical_interfaces(unit) if vlan_conf: vlan_conf.add_interfaces( LogicalInterface(name=unit_name))
def _build_l2_evpn_interface_config(self, interfaces, vn, vlan): interface_map = OrderedDict() vpg_map = {} for interface in interfaces: interface_map.setdefault(interface.pi_name, []).append(interface) vpg_map[interface.pi_name] = interface.vpg_obj.name for pi_name, interface_list in list(interface_map.items()): untagged = set([ int(i.port_vlan_tag) for i in interface_list if int(i.vlan_tag) == 0 ]) if len(untagged) > 1: self._logger.error( "Only one untagged interface is allowed on a PI %s" % pi_name) continue tagged = [ int(i.vlan_tag) for i in interface_list if int(i.vlan_tag) != 0 ] if self._is_enterprise_style(self._physical_router): if len(untagged) > 0 and len(tagged) > 0: self._logger.error( "Enterprise style config: Can't have tagged and " "untagged interfaces for same VN on same PI %s" % pi_name) continue elif len(set(untagged) & set(tagged)) > 0: self._logger.error( "SP style config: Can't have tagged and untagged " "interfaces with same Vlan-id on same PI %s" % pi_name) continue pi, li_map = self._add_or_lookup_pi(self.pi_map, pi_name) lag = LinkAggrGroup(description="Virtual Port Group : %s" % vpg_map[pi_name]) pi.set_link_aggregation_group(lag) for interface in interface_list: if int(interface.vlan_tag) == 0: is_tagged = False vlan_tag = str(interface.port_vlan_tag) else: is_tagged = True vlan_tag = str(interface.vlan_tag) unit = self._add_or_lookup_li(li_map, interface.li_name, interface.unit) unit.set_comment( DMUtils.l2_evpn_intf_unit_comment(vn, is_tagged, vlan_tag)) unit.set_is_tagged(is_tagged) unit.set_vlan_tag(vlan_tag) if vlan: vlan.set_vlan_id(int(vlan_tag)) self._add_ref_to_list(vlan.get_interfaces(), interface.li_name)
def build_l2_evpn_interface_config(self, interfaces, vn, vlan_conf): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf, li_map = self.set_default_pi(ifd_name) if interface_list[0].is_untagged(): if len(interface_list) > 1: self._logger.error( "invalid logical interfaces config for ifd %s" % (ifd_name)) continue unit_name = ifd_name + "." + str(interface_list[0].unit) unit = self.set_default_li(li_map, unit_name, interface_list[0].unit) unit.set_comment(DMUtils.l2_evpn_intf_unit_comment(vn, False)) unit.set_is_tagged(False) unit.set_vlan_tag('4094') # attach acls self.attach_acls(interface_list[0], unit) if vlan_conf: self.add_ref_to_list(vlan_conf.get_interfaces(), unit_name) else: for interface in interface_list: unit_name = ifd_name + "." + str(interface.unit) unit = self.set_default_li(li_map, unit_name, interface.unit) unit.set_comment( DMUtils.l2_evpn_intf_unit_comment( vn, True, interface.vlan_tag)) unit.set_is_tagged(True) unit.set_vlan_tag(str(interface.vlan_tag)) # attach acls self.attach_acls(interface, unit) if vlan_conf: self.add_ref_to_list(vlan_conf.get_interfaces(), unit_name)
def build_l2_evpn_interface_config(self, interfaces, vn, vlan_conf): ifd_map = {} for interface in interfaces: ifd_map.setdefault(interface.ifd_name, []).append(interface) for ifd_name, interface_list in ifd_map.items(): intf, li_map = self.set_default_pi(ifd_name) if interface_list[0].is_untagged(): if len(interface_list) > 1: self._logger.error( "invalid logical interfaces config for ifd %s" % ( ifd_name)) continue unit_name = ifd_name + "." + str(interface_list[0].unit) unit = self.set_default_li(li_map, unit_name, interface_list[0].unit) unit.set_comment(DMUtils.l2_evpn_intf_unit_comment(vn, False)) unit.set_is_tagged(False) unit.set_vlan_tag('4094') # attach acls self.attach_acls(interface_list[0], unit) if vlan_conf: self.add_ref_to_list(vlan_conf.get_interfaces(), unit_name) else: for interface in interface_list: unit_name = ifd_name + "." + str(interface.unit) unit = self.set_default_li(li_map, unit_name, interface.unit) unit.set_comment(DMUtils.l2_evpn_intf_unit_comment(vn, True, interface.vlan_tag)) unit.set_is_tagged(True) unit.set_vlan_tag(str(interface.vlan_tag)) # attach acls self.attach_acls(interface, unit) if vlan_conf: self.add_ref_to_list(vlan_conf.get_interfaces(), unit_name)
def _build_l2_evpn_interface_config(self, interfaces, vn, vlan): interface_map = OrderedDict() for interface in interfaces: interface_map.setdefault(interface.pi_name, []).append(interface) for pi_name, interface_list in interface_map.items(): if len(interface_list) > 1 and \ any(int(intf.vlan_tag) == 0 for intf in interface_list): self._logger.error( "Invalid logical interface config for PI %s" % pi_name) continue _, li_map = self._add_or_lookup_pi(self.pi_map, pi_name) for interface in interface_list: is_tagged = int(interface.vlan_tag) != 0 unit = self._add_or_lookup_li(li_map, interface.li_name, interface.unit) unit.set_comment(DMUtils.l2_evpn_intf_unit_comment(vn, is_tagged, interface.vlan_tag)) unit.set_is_tagged(is_tagged) unit.set_vlan_tag(str(interface.vlan_tag) if is_tagged else '4094') if vlan: self._add_ref_to_list(vlan.get_interfaces(), interface.li_name)