Skip to content

Commit

Permalink
Cumulus/FRR: split NCLU and FRR (#6630)
Browse files Browse the repository at this point in the history
* Cumulus: copy out NCLU package

* * Delete some obvious files
    - NCLU from FRR side
    - Concat, Frr, Interfaces, Ports from NCLU side
* Rewrite some VS tests with the appropriate vendor
* Delete InterfaceConverter in NCLU side

* remove always-unused vars

They were always unused, just became exposed by this work
  • Loading branch information
dhalperi committed Feb 16, 2021
1 parent 05f156c commit cce1623
Show file tree
Hide file tree
Showing 134 changed files with 9,113 additions and 392 deletions.
Expand Up @@ -59,7 +59,6 @@
import org.batfish.grammar.cumulus_interfaces.CumulusInterfacesParser.Si_no_inetContext;
import org.batfish.representation.cumulus.CumulusConcatenatedConfiguration;
import org.batfish.representation.cumulus.CumulusInterfacesConfiguration;
import org.batfish.representation.cumulus.CumulusNcluConfiguration;
import org.batfish.representation.cumulus.CumulusStructureType;
import org.batfish.representation.cumulus.CumulusStructureUsage;
import org.batfish.representation.cumulus.InterfaceClagSettings;
Expand Down Expand Up @@ -149,7 +148,7 @@ public void enterS_iface(S_ifaceContext ctx) {
public void enterSi_inet(Si_inetContext ctx) {
checkArgument(_currentIfaceName != null, "not find interface name");
if (ctx.LOOPBACK() != null) {
if (!_currentIfaceName.equals(CumulusNcluConfiguration.LOOPBACK_INTERFACE_NAME)) {
if (!_currentIfaceName.equals(CumulusConcatenatedConfiguration.LOOPBACK_INTERFACE_NAME)) {
_w.addWarning(
ctx, ctx.getStart().getText(), _parser, "expected loopback device to have name 'lo'");
}
Expand Down
Expand Up @@ -12,7 +12,7 @@ java_library(
deps = [
"//projects/batfish-common-protocol:common",
"//projects/batfish/src/main/antlr4/org/batfish/grammar/cumulus_nclu",
"//projects/batfish/src/main/java/org/batfish/representation/cumulus",
"//projects/batfish/src/main/java/org/batfish/representation/cumulus_nclu",
"@maven//:com_fasterxml_jackson_core_jackson_core",
"@maven//:com_google_code_findbugs_jsr305",
"@maven//:com_google_guava_guava",
Expand Down
Expand Up @@ -4,13 +4,13 @@
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Predicates.not;
import static java.lang.Long.parseLong;
import static org.batfish.representation.cumulus.CumulusNodeConfiguration.LOOPBACK_INTERFACE_NAME;
import static org.batfish.representation.cumulus.CumulusStructureType.INTERFACE;
import static org.batfish.representation.cumulus.CumulusStructureUsage.BOND_SLAVE;
import static org.batfish.representation.cumulus.CumulusStructureUsage.NET_ADD_INTERFACE;
import static org.batfish.representation.cumulus.InterfacesInterface.PHYSICAL_INTERFACE_PATTERN;
import static org.batfish.representation.cumulus.InterfacesInterface.SUBINTERFACE_PATTERN;
import static org.batfish.representation.cumulus.InterfacesInterface.VLAN_INTERFACE_PATTERN;
import static org.batfish.representation.cumulus_nclu.CumulusNcluConfiguration.LOOPBACK_INTERFACE_NAME;
import static org.batfish.representation.cumulus_nclu.CumulusNcluConfiguration.PHYSICAL_INTERFACE_PATTERN;
import static org.batfish.representation.cumulus_nclu.CumulusNcluConfiguration.SUBINTERFACE_PATTERN;
import static org.batfish.representation.cumulus_nclu.CumulusNcluConfiguration.VLAN_INTERFACE_PATTERN;
import static org.batfish.representation.cumulus_nclu.CumulusStructureType.INTERFACE;
import static org.batfish.representation.cumulus_nclu.CumulusStructureUsage.BOND_SLAVE;
import static org.batfish.representation.cumulus_nclu.CumulusStructureUsage.NET_ADD_INTERFACE;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.common.collect.BoundType;
Expand Down Expand Up @@ -159,35 +159,35 @@
import org.batfish.grammar.cumulus_nclu.CumulusNcluParser.Vxb_learningContext;
import org.batfish.grammar.cumulus_nclu.CumulusNcluParser.Vxv_idContext;
import org.batfish.grammar.cumulus_nclu.CumulusNcluParser.Vxv_local_tunnelipContext;
import org.batfish.representation.cumulus.BgpInterfaceNeighbor;
import org.batfish.representation.cumulus.BgpIpNeighbor;
import org.batfish.representation.cumulus.BgpIpv4UnicastAddressFamily;
import org.batfish.representation.cumulus.BgpL2VpnEvpnIpv4Unicast;
import org.batfish.representation.cumulus.BgpL2vpnEvpnAddressFamily;
import org.batfish.representation.cumulus.BgpNeighbor;
import org.batfish.representation.cumulus.BgpNeighbor.RemoteAs;
import org.batfish.representation.cumulus.BgpNeighborIpv4UnicastAddressFamily;
import org.batfish.representation.cumulus.BgpNeighborL2vpnEvpnAddressFamily;
import org.batfish.representation.cumulus.BgpNetwork;
import org.batfish.representation.cumulus.BgpPeerGroupNeighbor;
import org.batfish.representation.cumulus.BgpProcess;
import org.batfish.representation.cumulus.BgpRedistributionPolicy;
import org.batfish.representation.cumulus.BgpVrf;
import org.batfish.representation.cumulus.Bond;
import org.batfish.representation.cumulus.CumulusInterfaceType;
import org.batfish.representation.cumulus.CumulusNcluConfiguration;
import org.batfish.representation.cumulus.CumulusRoutingProtocol;
import org.batfish.representation.cumulus.CumulusStructureType;
import org.batfish.representation.cumulus.CumulusStructureUsage;
import org.batfish.representation.cumulus.Interface;
import org.batfish.representation.cumulus.InterfaceClagSettings;
import org.batfish.representation.cumulus.RouteMap;
import org.batfish.representation.cumulus.RouteMapEntry;
import org.batfish.representation.cumulus.RouteMapMatchInterface;
import org.batfish.representation.cumulus.StaticRoute;
import org.batfish.representation.cumulus.Vlan;
import org.batfish.representation.cumulus.Vrf;
import org.batfish.representation.cumulus.Vxlan;
import org.batfish.representation.cumulus_nclu.BgpInterfaceNeighbor;
import org.batfish.representation.cumulus_nclu.BgpIpNeighbor;
import org.batfish.representation.cumulus_nclu.BgpIpv4UnicastAddressFamily;
import org.batfish.representation.cumulus_nclu.BgpL2VpnEvpnIpv4Unicast;
import org.batfish.representation.cumulus_nclu.BgpL2vpnEvpnAddressFamily;
import org.batfish.representation.cumulus_nclu.BgpNeighbor;
import org.batfish.representation.cumulus_nclu.BgpNeighbor.RemoteAs;
import org.batfish.representation.cumulus_nclu.BgpNeighborIpv4UnicastAddressFamily;
import org.batfish.representation.cumulus_nclu.BgpNeighborL2vpnEvpnAddressFamily;
import org.batfish.representation.cumulus_nclu.BgpNetwork;
import org.batfish.representation.cumulus_nclu.BgpPeerGroupNeighbor;
import org.batfish.representation.cumulus_nclu.BgpProcess;
import org.batfish.representation.cumulus_nclu.BgpRedistributionPolicy;
import org.batfish.representation.cumulus_nclu.BgpVrf;
import org.batfish.representation.cumulus_nclu.Bond;
import org.batfish.representation.cumulus_nclu.CumulusInterfaceType;
import org.batfish.representation.cumulus_nclu.CumulusNcluConfiguration;
import org.batfish.representation.cumulus_nclu.CumulusRoutingProtocol;
import org.batfish.representation.cumulus_nclu.CumulusStructureType;
import org.batfish.representation.cumulus_nclu.CumulusStructureUsage;
import org.batfish.representation.cumulus_nclu.Interface;
import org.batfish.representation.cumulus_nclu.InterfaceClagSettings;
import org.batfish.representation.cumulus_nclu.RouteMap;
import org.batfish.representation.cumulus_nclu.RouteMapEntry;
import org.batfish.representation.cumulus_nclu.RouteMapMatchInterface;
import org.batfish.representation.cumulus_nclu.StaticRoute;
import org.batfish.representation.cumulus_nclu.Vlan;
import org.batfish.representation.cumulus_nclu.Vrf;
import org.batfish.representation.cumulus_nclu.Vxlan;

/**
* A listener that builds a {@link CumulusNcluConfiguration} while walking a parse tree produced by
Expand Down
Expand Up @@ -6,7 +6,7 @@
import org.batfish.common.Warnings;
import org.batfish.grammar.BatfishParseTreeWalker;
import org.batfish.grammar.ControlPlaneExtractor;
import org.batfish.representation.cumulus.CumulusNcluConfiguration;
import org.batfish.representation.cumulus_nclu.CumulusNcluConfiguration;
import org.batfish.vendor.VendorConfiguration;

/**
Expand Down
Expand Up @@ -15,12 +15,11 @@
import org.batfish.grammar.cumulus_ports.CumulusPortsParser.Port_definitionContext;
import org.batfish.grammar.cumulus_ports.CumulusPortsParser.SpeedContext;
import org.batfish.representation.cumulus.CumulusConcatenatedConfiguration;
import org.batfish.representation.cumulus.CumulusNcluConfiguration;
import org.batfish.representation.cumulus.CumulusStructureType;
import org.batfish.representation.cumulus.CumulusStructureUsage;

/**
* Populates a {@link CumulusNcluConfiguration} from the data in a {@link
* Populates a {@link CumulusConcatenatedConfiguration} from the data in a {@link
* org.batfish.grammar.cumulus_ports.CumulusPortsCombinedParser cumulus ports file parse tree}.
*/
public class CumulusPortsConfigurationBuilder extends CumulusPortsParserBaseListener {
Expand Down
Expand Up @@ -3,6 +3,7 @@
import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Preconditions.checkArgument;
import static org.batfish.datamodel.Configuration.DEFAULT_VRF_NAME;
import static org.batfish.representation.cumulus.BgpProcess.BGP_UNNUMBERED_IP;
import static org.batfish.representation.cumulus.CumulusConversions.DEFAULT_LOOPBACK_BANDWIDTH;
import static org.batfish.representation.cumulus.CumulusConversions.DEFAULT_PORT_BANDWIDTH;
import static org.batfish.representation.cumulus.CumulusConversions.SPEED_CONVERSION_FACTOR;
Expand All @@ -16,7 +17,6 @@
import static org.batfish.representation.cumulus.CumulusConversions.convertRouteMaps;
import static org.batfish.representation.cumulus.CumulusConversions.convertVxlans;
import static org.batfish.representation.cumulus.CumulusConversions.isUsedForBgpUnnumbered;
import static org.batfish.representation.cumulus.CumulusNcluConfiguration.LINK_LOCAL_ADDRESS;
import static org.batfish.representation.cumulus.InterfaceConverter.BRIDGE_NAME;
import static org.batfish.representation.cumulus.InterfaceConverter.DEFAULT_BRIDGE_PORTS;
import static org.batfish.representation.cumulus.InterfaceConverter.DEFAULT_BRIDGE_PVID;
Expand Down Expand Up @@ -53,17 +53,25 @@
import org.batfish.datamodel.InterfaceType;
import org.batfish.datamodel.Ip;
import org.batfish.datamodel.LineAction;
import org.batfish.datamodel.LinkLocalAddress;
import org.batfish.datamodel.MacAddress;
import org.batfish.datamodel.Prefix;
import org.batfish.datamodel.SwitchportMode;
import org.batfish.datamodel.vendor_family.cumulus.CumulusFamily;
import org.batfish.representation.cumulus.CumulusPortsConfiguration.PortSettings;
import org.batfish.vendor.VendorConfiguration;

/** A {@link VendorConfiguration} for the Cumulus NCLU configuration language. */
/**
* A {@link VendorConfiguration} for FRR based on many files (/etc/hostname,
* /etc/network/interfaces, /etc/frr/frr.conf, etc.).
*/
@ParametersAreNonnullByDefault
public class CumulusConcatenatedConfiguration extends VendorConfiguration
implements CumulusNodeConfiguration {
public class CumulusConcatenatedConfiguration extends VendorConfiguration {

public static final String LOOPBACK_INTERFACE_NAME = "lo";
@VisibleForTesting public static final String CUMULUS_CLAG_DOMAIN_ID = "~CUMULUS_CLAG_DOMAIN~";
public static final @Nonnull LinkLocalAddress LINK_LOCAL_ADDRESS =
LinkLocalAddress.of(BGP_UNNUMBERED_IP);

@Nonnull private String _hostname;

Expand All @@ -89,8 +97,8 @@ private CumulusConcatenatedConfiguration(
_portsConfiguration = ports;
}

@Nonnull
@Override
@Nonnull
public String getHostname() {
return _hostname;
}
Expand Down Expand Up @@ -211,7 +219,6 @@ private void populatePortsInterfaceProperties(Configuration c) {
}

@Nullable
@Override
public String getVrfForVlan(@Nullable Integer bridgeAccessVlan) {
if (bridgeAccessVlan == null) {
return null;
Expand Down Expand Up @@ -634,41 +641,34 @@ public CumulusPortsConfiguration getPortsConfiguration() {
return _portsConfiguration;
}

@Override
public Map<String, IpCommunityList> getIpCommunityLists() {
return _frrConfiguration.getIpCommunityLists();
}

@Override
public Map<String, IpPrefixList> getIpPrefixLists() {
return _frrConfiguration.getIpPrefixLists();
}

@Override
public Map<String, RouteMap> getRouteMaps() {
return _frrConfiguration.getRouteMaps();
}

@Override
public BgpProcess getBgpProcess() {
return _frrConfiguration.getBgpProcess();
}

@Override
public Optional<OspfInterface> getOspfInterface(String ifaceName) {
if (!_frrConfiguration.getInterfaces().containsKey(ifaceName)) {
return Optional.empty();
}
return Optional.ofNullable(_frrConfiguration.getInterfaces().get(ifaceName).getOspf());
}

@Override
@Nullable
public Vrf getVrf(String vrfName) {
return _frrConfiguration.getVrfs().get(vrfName);
}

@Override
@Nonnull
public Map<String, Vxlan> getVxlans() {
return _interfacesConfiguration.getInterfaces().values().stream()
Expand All @@ -677,7 +677,6 @@ public Map<String, Vxlan> getVxlans() {
.collect(ImmutableMap.toImmutableMap(Vxlan::getName, vxlan -> vxlan));
}

@Override
@Nonnull
public Map<String, InterfaceClagSettings> getClagSettings() {
return _interfacesConfiguration.getInterfaces().values().stream()
Expand All @@ -687,7 +686,6 @@ public Map<String, InterfaceClagSettings> getClagSettings() {
InterfacesInterface::getName, InterfacesInterface::getClagSettings));
}

@Override
public OspfProcess getOspfProcess() {
return _frrConfiguration.getOspfProcess();
}
Expand Down

0 comments on commit cce1623

Please sign in to comment.