Use BGPTableTypeRegistryConsumer instead of BGPOpenConfigMappingService 86/47686/2
authorMilos Fabian <milfabia@cisco.com>
Thu, 27 Oct 2016 15:14:56 +0000 (17:14 +0200)
committerClaudio D. Gasparini <cgaspari@cisco.com>
Sun, 30 Oct 2016 09:06:26 +0000 (09:06 +0000)
The BGPTableTypeRegistryConsumer is providing access to the map supported AFI/SAFI.

Remove BGPOpenConfigMappingService in a next step.

Change-Id: I837fe90446da983a4bad1f91fed871052ca67ef6
Signed-off-by: Milos Fabian <milfabia@cisco.com>
17 files changed:
bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModule.java
bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/AppPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/OpenConfigMappingUtil.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/PeerBean.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/BgpDeployer.java
bgp/rib-impl/src/main/resources/org/opendaylight/blueprint/bgp-rib.xml
bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AbstractConfig.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/AppPeerTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImplTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeerTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/OpenConfigMappingUtilTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImplTest.java

index dab04977be906ca0cf0ae1d94faa2efa8cde0c1a..1bde992f8e98fdae2d10b836b270a042feaee734 100755 (executable)
@@ -93,7 +93,7 @@ public final class BGPPeerModule extends org.opendaylight.controller.config.yang
         //map configuration to OpenConfig BGP
         final Neighbor neighbor = OpenConfigMappingUtil.fromBgpPeer(getAddPathDependency(), getAdvertizedTableDependency(), getHoldtimer(),
                 getHost(), getInitiateConnection(), getPassword(), getPort(), getRetrytimer(), getRemoteAs(), getPeerRole(), getSimpleRoutingPolicy(),
-                bgpDeployer.getMappingService());
+                bgpDeployer.getTableTypeRegistry());
         //write to configuration DS
         final KeyedInstanceIdentifier<Protocol, ProtocolKey> protocolIId = bgpDeployer.getInstanceIdentifier().child(Protocols.class)
             .child(Protocol.class, new ProtocolKey(BGP.class, rib.getInstanceIdentifier().getKey().getId().getValue()));
index 87f23c0dcf6fa492c308d0afabd2270099f76507..698fb577bfa1ee9053417f681f16d220a9b395a1 100755 (executable)
@@ -80,7 +80,7 @@ public final class RIBImplModule extends org.opendaylight.controller.config.yang
         //map configuration to OpenConfig BGP
         final Global global = OpenConfigMappingUtil.fromRib(getBgpRibId(), getClusterId(), getRibId(),
             new AsNumber(getLocalAs()), getLocalTableDependency(),
-                mapBestPathSelectionStrategyByFamily(getRibPathSelectionModeDependency()), bgpDeployer.getMappingService());
+                mapBestPathSelectionStrategyByFamily(getRibPathSelectionModeDependency()), bgpDeployer.getTableTypeRegistry());
         final InstanceIdentifier<Bgp> bgpIID = bgpDeployer.getInstanceIdentifier().child(Protocols.class)
             .child(Protocol.class, new ProtocolKey(BGP.class, getRibId().getValue())).augmentation(Protocol1.class)
             .child(Bgp.class);
index 925ae226b583406ed53ee9094bc3e16aa2999959..32fc4a71026e0fa23957a255d3356be91060220e 100644 (file)
@@ -19,7 +19,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.rib.impl.ApplicationPeer;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer.WriteConfiguration;
 import org.opendaylight.protocol.bgp.rib.impl.spi.RIB;
@@ -42,16 +42,16 @@ public final class AppPeer implements PeerBean {
     private BgpAppPeerSingletonService bgpAppPeerSingletonService;
 
     @Override
-    public void start(final RIB rib, final Neighbor neighbor, final BGPOpenConfigMappingService mappingService, final WriteConfiguration configurationWriter) {
+    public void start(final RIB rib, final Neighbor neighbor, final BGPTableTypeRegistryConsumer tableTypeRegistry, final WriteConfiguration configurationWriter) {
         this.currentConfiguration = neighbor;
         this.bgpAppPeerSingletonService = new BgpAppPeerSingletonService(rib, createAppRibId(neighbor), neighbor.getNeighborAddress().getIpv4Address(),
                 configurationWriter);
     }
 
     @Override
-    public void restart(final RIB rib, final BGPOpenConfigMappingService mappingService) {
+    public void restart(final RIB rib, final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         Preconditions.checkState(this.currentConfiguration != null);
-        start(rib, this.currentConfiguration, mappingService, null);
+        start(rib, this.currentConfiguration, tableTypeRegistry, null);
     }
 
     @Override
index c9084fa771395a8a01dbf604f69c5afc4059ea9c..5f68f316c01d28238f166daa02824f288e6a7007 100644 (file)
@@ -34,7 +34,7 @@ import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer;
 import org.opendaylight.protocol.bgp.rib.impl.spi.InstanceType;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbors.Neighbor;
@@ -63,7 +63,7 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
     private final InstanceIdentifier<NetworkInstance> networkInstanceIId;
     private final BlueprintContainer container;
     private final BundleContext bundleContext;
-    private final BGPOpenConfigMappingService mappingService;
+    private final BGPTableTypeRegistryConsumer tableTypeRegistry;
     private final ListenerRegistration<BgpDeployerImpl> registration;
     @GuardedBy("this")
     private final Map<InstanceIdentifier<Bgp>, RibImpl> ribs = new HashMap<>();
@@ -74,11 +74,11 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
     private boolean closed;
 
     public BgpDeployerImpl(final String networkInstanceName, final BlueprintContainer container, final BundleContext bundleContext, final DataBroker dataBroker,
-        final BGPOpenConfigMappingService mappingService) {
+        final BGPTableTypeRegistryConsumer mappingService) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
         this.container = Preconditions.checkNotNull(container);
         this.bundleContext = Preconditions.checkNotNull(bundleContext);
-        this.mappingService = Preconditions.checkNotNull(mappingService);
+        this.tableTypeRegistry = Preconditions.checkNotNull(mappingService);
         this.networkInstanceIId = InstanceIdentifier.create(NetworkInstances.class)
             .child(NetworkInstance.class, new NetworkInstanceKey(networkInstanceName));
         Futures.addCallback(initializeNetworkInstance(dataBroker, this.networkInstanceIId), new FutureCallback<Void>() {
@@ -191,7 +191,7 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
         final List<PeerBean> closedPeers = closeAllBindedPeers(rootIdentifier);
         ribImpl.close();
         initiateRibInstance(rootIdentifier, global, ribImpl, configurationWriter);
-        closedPeers.forEach(peer -> peer.restart(ribImpl, this.mappingService));
+        closedPeers.forEach(peer -> peer.restart(ribImpl, this.tableTypeRegistry));
         LOG.debug("RIB instance created: {}", ribImpl);
     }
 
@@ -215,7 +215,7 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
     private void initiateRibInstance(final InstanceIdentifier<Bgp> rootIdentifier, final Global global,
         final RibImpl ribImpl, final WriteConfiguration configurationWriter) {
         final String ribInstanceName = getRibInstanceName(rootIdentifier);
-        ribImpl.start(global, ribInstanceName, this.mappingService, configurationWriter);
+        ribImpl.start(global, ribInstanceName, this.tableTypeRegistry, configurationWriter);
         registerRibInstance(ribImpl, ribInstanceName);
     }
 
@@ -294,7 +294,7 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
         final String peerInstanceName = getNeighborInstanceName(neighborIdentifier);
         final RibImpl rib = this.ribs.get(rootIdentifier);
         if (rib != null) {
-            bgpPeer.start(rib, neighbor, this.mappingService, configurationWriter);
+            bgpPeer.start(rib, neighbor, this.tableTypeRegistry, configurationWriter);
             if (bgpPeer instanceof BgpPeer) {
                 registerPeerInstance((BgpPeer) bgpPeer, peerInstanceName);
             }
@@ -302,8 +302,8 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
     }
 
     @Override
-    public BGPOpenConfigMappingService getMappingService() {
-        return this.mappingService;
+    public BGPTableTypeRegistryConsumer getTableTypeRegistry() {
+        return this.tableTypeRegistry;
     }
 
     @Override
index 5f7b0f45190d47b108099ad4930a519ef075b26c..3c3711953f2397c02597ea17d67f8998bfde8f19 100644 (file)
@@ -30,7 +30,7 @@ import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpExtendedMessageUtil;
 import org.opendaylight.protocol.bgp.parser.spi.MultiprotocolCapabilitiesUtil;
 import org.opendaylight.protocol.bgp.rib.impl.BGPPeer;
@@ -78,17 +78,17 @@ public final class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
     }
 
     @Override
-    public void start(final RIB rib, final Neighbor neighbor, final BGPOpenConfigMappingService mappingService,
+    public void start(final RIB rib, final Neighbor neighbor, final BGPTableTypeRegistryConsumer tableTypeRegistry,
         final WriteConfiguration configurationWriter) {
         Preconditions.checkState(this.bgpPeerSingletonService == null, "Previous peer instance {} was not closed.");
-        this.bgpPeerSingletonService = new BgpPeerSingletonService(rib, neighbor, mappingService, configurationWriter);
+        this.bgpPeerSingletonService = new BgpPeerSingletonService(rib, neighbor, tableTypeRegistry, configurationWriter);
         this.currentConfiguration = neighbor;
     }
 
     @Override
-    public void restart(final RIB rib, final BGPOpenConfigMappingService mappingService) {
+    public void restart(final RIB rib, final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         Preconditions.checkState(this.currentConfiguration != null);
-        start(rib, this.currentConfiguration, mappingService, null);
+        start(rib, this.currentConfiguration, tableTypeRegistry, null);
     }
 
     @Override
@@ -132,7 +132,7 @@ public final class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
     }
 
     private static List<BgpParameters> getBgpParameters(final Neighbor neighbor, final RIB rib,
-            final BGPOpenConfigMappingService mappingService) {
+            final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final List<BgpParameters> tlvs = new ArrayList<>();
         final List<OptionalCapabilities> caps = new ArrayList<>();
         caps.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().setAs4BytesCapability(
@@ -142,14 +142,14 @@ public final class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
         caps.add(new OptionalCapabilitiesBuilder().setCParameters(MultiprotocolCapabilitiesUtil.RR_CAPABILITY).build());
 
         final List<AfiSafi> afiSafi = OpenConfigMappingUtil.getAfiSafiWithDefault(neighbor.getAfiSafis(), false);
-        final List<AddressFamilies> addPathCapability = OpenConfigMappingUtil.toAddPathCapability(afiSafi, mappingService);
+        final List<AddressFamilies> addPathCapability = OpenConfigMappingUtil.toAddPathCapability(afiSafi, tableTypeRegistry);
         if (!addPathCapability.isEmpty()) {
             caps.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation(CParameters1.class,
                     new CParameters1Builder().setAddPathCapability(
                             new AddPathCapabilityBuilder().setAddressFamilies(addPathCapability).build()).build()).build()).build());
         }
 
-        final List<BgpTableType> tableTypes = mappingService.toTableTypes(afiSafi);
+        final List<BgpTableType> tableTypes = OpenConfigMappingUtil.toTableTypes(afiSafi, tableTypeRegistry);
         for (final BgpTableType tableType : tableTypes) {
             if (!rib.getLocalTables().contains(tableType)) {
                 LOG.info("RIB instance does not list {} in its local tables. Incoming data will be dropped.", tableType);
@@ -209,12 +209,12 @@ public final class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
         private final BGPSessionPreferences prefs;
         private Future<Void> connection;
 
-        private BgpPeerSingletonService(final RIB rib, final Neighbor neighbor, final BGPOpenConfigMappingService mappingService,
+        private BgpPeerSingletonService(final RIB rib, final Neighbor neighbor, final BGPTableTypeRegistryConsumer tableTypeRegistry,
             final WriteConfiguration configurationWriter) {
             this.neighborAddress = neighbor.getNeighborAddress();
             this.bgpPeer = new BGPPeer(Ipv4Util.toStringIP(this.neighborAddress), rib,
                     OpenConfigMappingUtil.toPeerRole(neighbor), getSimpleRoutingPolicy(neighbor), BgpPeer.this.rpcRegistry);
-            final List<BgpParameters> bgpParameters = getBgpParameters(neighbor, rib, mappingService);
+            final List<BgpParameters> bgpParameters = getBgpParameters(neighbor, rib, tableTypeRegistry);
             final KeyMapping keyMapping = OpenConfigMappingUtil.getNeighborKey(neighbor);
             this.prefs = new BGPSessionPreferences(rib.getLocalAs(), getHoldTimer(neighbor), rib.getBgpIdentifier(), getPeerAs(neighbor, rib),
                 bgpParameters, getPassword(keyMapping));
index b7b7df028b8566d77f541eff380aaade656a321e..819cc3a5d78b8cbdbef2a58afe9177d4614a7138 100644 (file)
@@ -20,10 +20,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.BiFunction;
+import java.util.stream.Collectors;
 import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
 import org.opendaylight.protocol.bgp.mode.impl.add.all.paths.AllPathSelection;
 import org.opendaylight.protocol.bgp.mode.impl.add.n.paths.AddPathBestNPathSelection;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.RIB;
 import org.opendaylight.protocol.concepts.KeyMapping;
@@ -47,6 +48,7 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.t
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Global;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.GlobalBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Neighbors;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.CommunityType;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.PeerType;
@@ -206,12 +208,12 @@ public final class OpenConfigMappingUtil {
         return timers != null ? timers.getConfig() : null;
     }
 
-    public static Map<BgpTableType, PathSelectionMode> toPathSelectionMode(final List<AfiSafi> afiSafis, final BGPOpenConfigMappingService mappingService) {
+    public static Map<BgpTableType, PathSelectionMode> toPathSelectionMode(final List<AfiSafi> afiSafis, final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final Map<BgpTableType, PathSelectionMode> pathSelectionModes = new HashMap<>();
         for (final AfiSafi afiSafi : afiSafis) {
             final BgpNeighborAddPathsConfig afiSafi2 = afiSafi.getAugmentation(AfiSafi2.class);
             if (afiSafi2 != null) {
-                final Optional<BgpTableType> bgpTableType = mappingService.toBgpTableType(afiSafi.getAfiSafiName());
+                final Optional<BgpTableType> bgpTableType = tableTypeRegistry.getTableType(afiSafi.getAfiSafiName());
                 if (bgpTableType.isPresent()) {
                     final Short sendMax = afiSafi2.getSendMax();
                     final PathSelectionMode selectionMode;
@@ -239,11 +241,11 @@ public final class OpenConfigMappingUtil {
         return false;
     }
 
-    public static List<AddressFamilies> toAddPathCapability(final List<AfiSafi> afiSafis, final BGPOpenConfigMappingService mappingService) {
+    public static List<AddressFamilies> toAddPathCapability(final List<AfiSafi> afiSafis, final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final List<AddressFamilies> addPathCapability = new ArrayList<>();
         for (final AfiSafi afiSafi : afiSafis) {
             final BgpNeighborAddPathsConfig afiSafi1 = afiSafi.getAugmentation(AfiSafi1.class);
-            final Optional<BgpTableType> bgpTableType = mappingService.toBgpTableType(afiSafi.getAfiSafiName());
+            final Optional<BgpTableType> bgpTableType = tableTypeRegistry.getTableType(afiSafi.getAfiSafiName());
             if (afiSafi1 != null && bgpTableType.isPresent()) {
                 final AddressFamiliesBuilder builder = new AddressFamiliesBuilder(bgpTableType.get());
                 builder.setSendReceive(toSendReceiveMode(afiSafi1));
@@ -265,13 +267,13 @@ public final class OpenConfigMappingUtil {
 
     public static Global fromRib(final BgpId bgpId, final ClusterIdentifier clusterIdentifier, final RibId ribId,
             final AsNumber localAs, final List<BgpTableType> localTables,
-            final Map<TablesKey, PathSelectionMode> pathSelectionStrategies, final BGPOpenConfigMappingService mappingService) {
-        return toGlobalConfiguration(bgpId, clusterIdentifier, localAs, localTables, pathSelectionStrategies, mappingService);
+            final Map<TablesKey, PathSelectionMode> pathSelectionStrategies, final BGPTableTypeRegistryConsumer bgpTableTypeRegistryConsumer) {
+        return toGlobalConfiguration(bgpId, clusterIdentifier, localAs, localTables, pathSelectionStrategies, bgpTableTypeRegistryConsumer);
     }
 
     private static Global toGlobalConfiguration(final BgpId bgpId, final ClusterIdentifier clusterIdentifier,
             final AsNumber localAs, final List<BgpTableType> localTables,
-            final Map<TablesKey, PathSelectionMode> pathSelectionStrategies, final BGPOpenConfigMappingService mappingService) {
+            final Map<TablesKey, PathSelectionMode> pathSelectionStrategies, final BGPTableTypeRegistryConsumer bgpTableTypeRegistryConsumer) {
         final ConfigBuilder configBuilder = new ConfigBuilder();
         configBuilder.setAs(localAs);
         configBuilder.setRouterId(bgpId);
@@ -280,19 +282,19 @@ public final class OpenConfigMappingUtil {
                     new GlobalConfigAugmentationBuilder().setRouteReflectorClusterId(new RrClusterIdType(clusterIdentifier)).build());
         }
         return new GlobalBuilder().setAfiSafis(new AfiSafisBuilder().setAfiSafi(toAfiSafis(localTables,
-                (afiSafi, tableType) -> toGlobalAfiSafiAddPath(afiSafi, tableType, pathSelectionStrategies), mappingService)).build())
+                (afiSafi, tableType) -> toGlobalAfiSafiAddPath(afiSafi, tableType, pathSelectionStrategies), bgpTableTypeRegistryConsumer)).build())
                 .setConfig(configBuilder.build()).build();
     }
 
     public static Neighbor fromBgpPeer(final List<AddressFamilies> addPathCapabilities,
             final List<BgpTableType> advertisedTables, final Integer holdTimer, final IpAddress ipAddress,
             final Boolean isActive, final Rfc2385Key password, final PortNumber portNumber, final Integer retryTimer,
-            final AsNumber remoteAs, final PeerRole peerRole, final SimpleRoutingPolicy simpleRoutingPolicy, final BGPOpenConfigMappingService mappingService) {
+            final AsNumber remoteAs, final PeerRole peerRole, final SimpleRoutingPolicy simpleRoutingPolicy, final BGPTableTypeRegistryConsumer bgpTableTypeRegistryConsumer) {
         final NeighborBuilder neighborBuilder = new NeighborBuilder();
         neighborBuilder.setNeighborAddress(ipAddress);
         neighborBuilder.setKey(new NeighborKey(ipAddress));
         neighborBuilder.setAfiSafis(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.AfiSafisBuilder().setAfiSafi(toAfiSafis(advertisedTables,
-                (afiSafi, tableType) -> toNeighborAfiSafiAddPath(afiSafi, tableType, addPathCapabilities), mappingService)).build());
+                (afiSafi, tableType) -> toNeighborAfiSafiAddPath(afiSafi, tableType, addPathCapabilities), bgpTableTypeRegistryConsumer)).build());
         neighborBuilder.setTransport(new TransportBuilder().setConfig(
                 new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.transport.ConfigBuilder()
                 .setPassiveMode(!isActive)
@@ -381,10 +383,10 @@ public final class OpenConfigMappingUtil {
     }
 
     static List<AfiSafi> toAfiSafis(final List<BgpTableType> advertizedTables, final BiFunction<AfiSafi, BgpTableType, AfiSafi> function,
-            final BGPOpenConfigMappingService mappingService) {
+            final BGPTableTypeRegistryConsumer bgpTableTypeRegistryConsumer) {
         final List<AfiSafi> afiSafis = new ArrayList<>(advertizedTables.size());
         for (final BgpTableType tableType : advertizedTables) {
-            final Optional<AfiSafi> afiSafiMaybe = mappingService.toAfiSafi(new BgpTableTypeImpl(tableType.getAfi(), tableType.getSafi()));
+            final Optional<AfiSafi> afiSafiMaybe = toAfiSafi(new BgpTableTypeImpl(tableType.getAfi(), tableType.getSafi()), bgpTableTypeRegistryConsumer);
             if (afiSafiMaybe.isPresent()) {
                 final AfiSafi afiSafi = function.apply(afiSafiMaybe.get(), tableType);
                 afiSafis.add(afiSafi);
@@ -445,4 +447,20 @@ public final class OpenConfigMappingUtil {
         return builder.build();
     }
 
+    public static Optional<AfiSafi> toAfiSafi(final BgpTableType tableType, final BGPTableTypeRegistryConsumer tableTypeRegistry) {
+        final Optional<Class<? extends AfiSafiType>> afiSafi = tableTypeRegistry.getAfiSafiType(tableType);
+        if (afiSafi.isPresent()) {
+            return Optional.of(new AfiSafiBuilder().setAfiSafiName(afiSafi.get()).build());
+        }
+        return Optional.empty();
+    }
+
+    public static List<BgpTableType> toTableTypes(final List<AfiSafi> afiSafis, final BGPTableTypeRegistryConsumer tableTypeRegistry) {
+        return afiSafis.stream()
+                .map(afiSafi -> tableTypeRegistry.getTableType(afiSafi.getAfiSafiName()))
+                .filter(Optional::isPresent)
+                .map(Optional::get)
+                .collect(Collectors.toList());
+    }
+
 }
index a640494490eb626f9a93b3c0e4d53aabf3b77d01..b8f0bf5c7b68195c5402711975704068d942677c 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.protocol.bgp.rib.impl.config;
 
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer.WriteConfiguration;
 import org.opendaylight.protocol.bgp.rib.impl.spi.RIB;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbors.Neighbor;
@@ -19,9 +19,9 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.n
  */
 public interface PeerBean extends AutoCloseable {
 
-    void start(RIB rib, Neighbor neighbor, BGPOpenConfigMappingService mappingService, WriteConfiguration configurationWriter);
+    void start(RIB rib, Neighbor neighbor, BGPTableTypeRegistryConsumer tableTypeRegistry, WriteConfiguration configurationWriter);
 
-    void restart(RIB rib, BGPOpenConfigMappingService mappingService);
+    void restart(RIB rib, BGPTableTypeRegistryConsumer tableTypeRegistry);
 
     @Override
     void close();
index 9d9294f08d42a68b84cb3de96c2182e73f41dda7..63cb077d20aff35ae0243c949c7adfa005aba51f 100644 (file)
@@ -26,7 +26,7 @@ import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvid
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
 import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer;
@@ -86,10 +86,10 @@ public final class RibImpl implements RIB, AutoCloseable {
         this.schemaService = schemaService;
     }
 
-    void start(final Global global, final String instanceName, final BGPOpenConfigMappingService mappingService,
+    void start(final Global global, final String instanceName, final BGPTableTypeRegistryConsumer tableTypeRegistry,
         final BgpDeployer.WriteConfiguration configurationWriter) {
         Preconditions.checkState(this.ribImpl == null, "Previous instance %s was not closed.", this);
-        this.ribImpl = createRib(this.provider, global, instanceName, mappingService, configurationWriter);
+        this.ribImpl = createRib(this.provider, global, instanceName, tableTypeRegistry, configurationWriter);
         this.schemaContextRegistration = this.schemaService.registerSchemaContextListener(this.ribImpl);
     }
 
@@ -219,16 +219,16 @@ public final class RibImpl implements RIB, AutoCloseable {
     }
 
     private RIBImpl createRib(final ClusterSingletonServiceProvider provider, final Global global, final String bgpInstanceName,
-        final BGPOpenConfigMappingService mappingService, final BgpDeployer.WriteConfiguration configurationWriter) {
+        final BGPTableTypeRegistryConsumer tableTypeRegistry, final BgpDeployer.WriteConfiguration configurationWriter) {
         this.afiSafi = getAfiSafiWithDefault(global.getAfiSafis(), true);
         final Config globalConfig = global.getConfig();
         this.asNumber = globalConfig.getAs();
         this.routerId = globalConfig.getRouterId();
         this.clusterId = OpenConfigMappingUtil.getClusterIdentifier(globalConfig);
-        final Map<TablesKey, PathSelectionMode> pathSelectionModes = OpenConfigMappingUtil.toPathSelectionMode(this.afiSafi, mappingService).entrySet()
+        final Map<TablesKey, PathSelectionMode> pathSelectionModes = OpenConfigMappingUtil.toPathSelectionMode(this.afiSafi, tableTypeRegistry).entrySet()
                 .stream().collect(Collectors.toMap(entry -> new TablesKey(entry.getKey().getAfi(), entry.getKey().getSafi()), Map.Entry::getValue));
         return new RIBImpl(provider, new RibId(bgpInstanceName), this.asNumber, new BgpId(this.routerId), this.clusterId,
-                this.extensions, this.dispatcher, this.codecTreeFactory, this.domBroker, mappingService.toTableTypes(this.afiSafi), pathSelectionModes,
+                this.extensions, this.dispatcher, this.codecTreeFactory, this.domBroker, OpenConfigMappingUtil.toTableTypes(this.afiSafi, tableTypeRegistry), pathSelectionModes,
                 this.extensions.getClassLoadingStrategy(), configurationWriter);
     }
 
index be39e0c4bcf7c8c6b7d4d3f997f0e6de3aa8a79f..b8d6e8f41bc8062f0601d4974d3f8e54d5497acb 100644 (file)
@@ -9,7 +9,7 @@
 package org.opendaylight.protocol.bgp.rib.impl.spi;
 
 import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbors.Neighbor;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Global;
@@ -35,7 +35,7 @@ public interface BgpDeployer {
      */
     InstanceIdentifier<NetworkInstance> getInstanceIdentifier();
 
-    BGPOpenConfigMappingService getMappingService();
+    BGPTableTypeRegistryConsumer getTableTypeRegistry();
 
     <T extends DataObject> ListenableFuture<Void> writeConfiguration(T data, InstanceIdentifier<T> identifier);
 
index 06144c6c198577ff17014a70ffcc6c7b80df38fa..1474b5ef19480a1951afc73d976a19875893e796 100644 (file)
@@ -45,7 +45,7 @@
   <reference id="globalBgpExtensions" interface="org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext"/>
   <reference id="codecTreeFactory" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory"/>
   <reference id="domDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker" odl:type="pingpong"/>
-  <reference id="bgpOpenConfigMappingService" interface="org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService"/>
+  <reference id="bgpTableTypeRegistry" interface="org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer"/>
   <reference id="schemaService" interface="org.opendaylight.controller.sal.core.api.model.SchemaService"/>
   <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
 
@@ -54,7 +54,7 @@
     <argument ref="blueprintContainer"/>
     <argument ref="blueprintBundleContext"/>
     <argument ref="dataBroker"/>
-    <argument ref="bgpOpenConfigMappingService"/>
+    <argument ref="bgpTableTypeRegistry"/>
   </bean>
 
   <service ref="bgpDeployer" interface="org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer"/>
index 64655abe6d7fc8fdcc95c83fed4dc9ec002be8b8..ae4e067822a78c05be5a375773a4d6dffba3289c 100755 (executable)
@@ -84,7 +84,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
 import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
 import org.opendaylight.controller.sal.core.api.model.SchemaService;
 import org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
 import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.StrictBGPPeerRegistry;
@@ -98,7 +98,6 @@ import org.opendaylight.protocol.bgp.rib.impl.stats.UnsignedInt32Counter;
 import org.opendaylight.protocol.bgp.rib.impl.stats.rib.impl.BGPRenderStats;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext;
 import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Global;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
@@ -172,7 +171,7 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest {
     private BgpDeployer bgpDeployer;
 
     @Mock
-    private BGPOpenConfigMappingService bgpMappingService;
+    private BGPTableTypeRegistryConsumer tableTypeREgistry;
 
     @Mock
     private BGPPeerRuntimeMXBean mockedPeer;
@@ -275,8 +274,8 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest {
         doNothing().when(this.bgpDeployer).onNeighborModified(any(),any(),any());
         doReturn(this.mockedFuture).when(this.bgpDeployer).writeConfiguration(any(), any());
         doReturn(this.mockedFuture).when(this.bgpDeployer).removeConfiguration(any());
-        doReturn(java.util.Optional.of(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build())).when(this.bgpMappingService).toAfiSafi(any());
-        doReturn(this.bgpMappingService).when(this.bgpDeployer).getMappingService();
+        doReturn(java.util.Optional.of(IPV4UNICAST.class)).when(this.tableTypeREgistry).getAfiSafiType(any());
+        doReturn(this.tableTypeREgistry).when(this.bgpDeployer).getTableTypeRegistry();
         doReturn(OPENCONFIG_IID).when(this.bgpDeployer).getInstanceIdentifier();
         final DOMTransactionChain mockedChain = mock(DOMTransactionChain.class);
         final DOMDataWriteTransaction mockedWTx = mock(DOMDataWriteTransaction.class);
index fcd4a546d49d336ed940c76170a3523cf3408173..b920aeeaac7d0172c83c717791d67fc4ef827e5f 100644 (file)
@@ -32,7 +32,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.AbstractImportPolicy;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
@@ -66,7 +66,7 @@ class AbstractConfig {
     @Mock
     protected ClusterSingletonServiceRegistration singletonServiceRegistration;
     @Mock
-    protected BGPOpenConfigMappingService mappingService;
+    protected BGPTableTypeRegistryConsumer tableTypeRegistry;
     @Mock
     protected BgpDeployer.WriteConfiguration configurationWriter;
     @Mock
@@ -131,10 +131,8 @@ class AbstractConfig {
             .createReconnectingClient(any(InetSocketAddress.class), any(BGPPeerRegistry.class), anyInt(), any(Optional.class));
         Mockito.doReturn(this.dispatcher).when(this.rib).getDispatcher();
 
-        Mockito.doReturn(Collections.singletonList(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)))
-            .when(this.mappingService).toTableTypes(any());
         Mockito.doReturn(java.util.Optional.of(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)))
-            .when(this.mappingService).toBgpTableType(any());
+            .when(this.tableTypeRegistry).getTableType(any());
         Mockito.doReturn(Collections.singleton(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)))
             .when(this.rib).getLocalTables();
         Mockito.doNothing().when(this.configurationWriter).apply();
index 60a2c075396d303cc4fe60b4a726fae54d88e81c..ea97e220dc2617ccfc9ebe395845ae4cbb06acf2 100644 (file)
@@ -39,7 +39,7 @@ public class AppPeerTest extends AbstractConfig {
     public void testAppPeer() throws Exception {
         final Neighbor neighbor = new NeighborBuilder().setConfig(new ConfigBuilder().addAugmentation(Config2.class,
                 new Config2Builder().setPeerGroup(OpenConfigMappingUtil.APPLICATION_PEER_GROUP_NAME).build()).build()).setNeighborAddress(new IpAddress(new Ipv4Address("127.0.0.1"))).build();
-        APP_PEER.start(this.rib, neighbor, this.mappingService, this.configurationWriter);
+        APP_PEER.start(this.rib, neighbor, this.tableTypeRegistry, this.configurationWriter);
         Mockito.verify(this.rib).getYangRibId();
         Mockito.verify(this.rib).getService();
         Mockito.verify(this.rib).getRibIServiceGroupIdentifier();
@@ -51,7 +51,7 @@ public class AppPeerTest extends AbstractConfig {
         Mockito.verify(this.rib).getLocalTablesKeys();
         Mockito.verify(this.domTx).newWriteOnlyTransaction();
 
-        APP_PEER.restart(this.rib, this.mappingService);
+        APP_PEER.restart(this.rib, this.tableTypeRegistry);
         this.singletonService.instantiateServiceInstance();
         Mockito.verify(this.rib, times(4)).getYangRibId();
         Mockito.verify(this.rib, times(4)).getService();
index 62fa19fe4912774648d9d2b87fc36bd32ef34cdc..ff557c4db70a8a822b13a69eb713170c2d7766e9 100644 (file)
@@ -52,7 +52,7 @@ import org.opendaylight.controller.sal.core.api.model.SchemaService;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPPeerRegistry;
@@ -124,7 +124,7 @@ public class BgpDeployerImplTest {
     @Mock
     private DataBroker dataBroker;
     @Mock
-    private BGPOpenConfigMappingService mappingService;
+    private BGPTableTypeRegistryConsumer tableTypeRegistry;
     @Mock
     private WriteTransaction wTx;
     @Mock
@@ -142,14 +142,13 @@ public class BgpDeployerImplTest {
         final DOMDataBroker domDataBroker = mock(DOMDataBroker.class);
 
         Mockito.doReturn(this.wTx).when(this.dataBroker).newWriteOnlyTransaction();
-        Mockito.doReturn("mapping").when(this.mappingService).toString();
+        Mockito.doReturn("mapping").when(this.tableTypeRegistry).toString();
 
         Mockito.doReturn(null).when(domDataBroker).createTransactionChain(any());
         Mockito.doReturn(Collections.singletonMap(DOMDataTreeChangeService.class, mock(DOMDataBrokerExtension.class)))
             .when(domDataBroker).getSupportedExtensions();
 
-        Mockito.doReturn(Collections.singletonList(TABLE_TYPE)).when(this.mappingService).toTableTypes(any());
-        Mockito.doReturn(Optional.of(TABLE_TYPE)).when(this.mappingService).toBgpTableType(any());
+        Mockito.doReturn(Optional.of(TABLE_TYPE)).when(this.tableTypeRegistry).getTableType(any());
         Mockito.doNothing().when(this.registration).unregister();
         Mockito.doReturn(this.registration).when(this.bundleContext).registerService(eq(InstanceType.RIB.getServices()), any()
             , any(Dictionary.class));
@@ -200,7 +199,7 @@ public class BgpDeployerImplTest {
     @Test
     public void testDeployerRib() throws Exception {
         Mockito.doReturn(Global.class).when(this.dObject).getDataType();
-        final BgpDeployerImpl deployer = new BgpDeployerImpl(NETWORK_INSTANCE_NAME, this.blueprintContainer, this.bundleContext, this.dataBroker, this.mappingService);
+        final BgpDeployerImpl deployer = new BgpDeployerImpl(NETWORK_INSTANCE_NAME, this.blueprintContainer, this.bundleContext, this.dataBroker, this.tableTypeRegistry);
         final BgpDeployerImpl spyDeployer = spy(deployer);
         configureGlobal(IPV4UNICAST.class);
         Mockito.doReturn(WRITE).when(this.dObject).getModificationType();
@@ -213,7 +212,7 @@ public class BgpDeployerImplTest {
         verify(this.dataBroker).registerDataTreeChangeListener(Mockito.any(DataTreeIdentifier.class), Mockito.any(BgpDeployerImpl.class));
 
         assertEquals(networkInstanceIId, spyDeployer.getInstanceIdentifier());
-        assertEquals(this.mappingService, spyDeployer.getMappingService());
+        assertEquals(this.tableTypeRegistry, spyDeployer.getTableTypeRegistry());
 
         spyDeployer.onDataTreeChanged(this.collection);
         verifyPrivate(spyDeployer).invoke("onGlobalChanged", any(DataObjectModification.class), any(InstanceIdentifier.class));
@@ -299,7 +298,7 @@ public class BgpDeployerImplTest {
     @Test
     public void testDeployerCreateNeighbor() throws Exception {
 
-        final BgpDeployerImpl deployer = new BgpDeployerImpl(NETWORK_INSTANCE_NAME, this.blueprintContainer, this.bundleContext, this.dataBroker, this.mappingService);
+        final BgpDeployerImpl deployer = new BgpDeployerImpl(NETWORK_INSTANCE_NAME, this.blueprintContainer, this.bundleContext, this.dataBroker, this.tableTypeRegistry);
         final BgpDeployerImpl spyDeployer = spy(deployer);
 
         //First create Rib
@@ -333,7 +332,7 @@ public class BgpDeployerImplTest {
         verify(this.dataBroker).registerDataTreeChangeListener(Mockito.any(DataTreeIdentifier.class), Mockito.any(BgpDeployerImpl.class));
 
         assertEquals(networkInstanceIId, spyDeployer.getInstanceIdentifier());
-        assertEquals(this.mappingService, spyDeployer.getMappingService());
+        assertEquals(this.tableTypeRegistry, spyDeployer.getTableTypeRegistry());
 
         spyDeployer.onDataTreeChanged(this.collection);
         verify(spyDeployer, times(2)).onDataTreeChanged(any(Collection.class));
index a446bbe23cb59400462d2547d23ae3f77c4c4619..5c10686f8b1b3d684ed6de6aa182160e588df8e8 100644 (file)
@@ -15,7 +15,6 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyList;
 import static org.mockito.Mockito.times;
 
 import com.google.common.base.Optional;
@@ -81,12 +80,11 @@ public class BgpPeerTest extends AbstractConfig {
         final Neighbor neighbor = new NeighborBuilder().setAfiSafis(createAfiSafi()).setConfig(createConfig()).setNeighborAddress(NEIGHBOR_ADDRESS)
             .setRouteReflector(createRR()).setTimers(createTimers()).setTransport(createTransport()).setAddPaths(createAddPath()).build();
 
-        this.bgpPeer.start(this.rib, neighbor, this.mappingService, this.configurationWriter);
+        this.bgpPeer.start(this.rib, neighbor, this.tableTypeRegistry, this.configurationWriter);
         Mockito.verify(this.render).getConfiguredPeerCounter();
         Mockito.verify(this.rib).createPeerChain(any());
         Mockito.verify(this.rib, times(2)).getLocalAs();
         Mockito.verify(this.rib).getLocalTables();
-        Mockito.verify(this.mappingService).toTableTypes(anyList());
         Mockito.verify(this.rib).getRibIServiceGroupIdentifier();
         Mockito.verify(this.rib).registerClusterSingletonService(any(ClusterSingletonService.class));
 
@@ -96,19 +94,18 @@ public class BgpPeerTest extends AbstractConfig {
         Mockito.verify(this.dispatcher).createReconnectingClient(any(InetSocketAddress.class), any(BGPPeerRegistry.class), anyInt(), any(Optional.class));
 
         try {
-            this.bgpPeer.start(this.rib, neighbor, this.mappingService, this.configurationWriter);
+            this.bgpPeer.start(this.rib, neighbor, this.tableTypeRegistry, this.configurationWriter);
             fail("Expected Exception");
         } catch (final IllegalStateException expected) {
             assertEquals("Previous peer instance {} was not closed.", expected.getMessage());
         }
         this.bgpPeer.setServiceRegistration(this.serviceRegistration);
         this.bgpPeer.close();
-        this.bgpPeer.restart(this.rib, this.mappingService);
+        this.bgpPeer.restart(this.rib, this.tableTypeRegistry);
         Mockito.verify(this.render, times(2)).getConfiguredPeerCounter();
         Mockito.verify(this.rib, times(2)).createPeerChain(any());
         Mockito.verify(this.rib, times(4)).getLocalAs();
         Mockito.verify(this.rib, times(2)).getLocalTables();
-        Mockito.verify(this.mappingService, times(2)).toTableTypes(anyList());
         Mockito.verify(this.rib, times(2)).getRibIServiceGroupIdentifier();
         Mockito.verify(this.rib, times(2)).registerClusterSingletonService(any(ClusterSingletonService.class));
         this.singletonService.instantiateServiceInstance();
@@ -131,7 +128,7 @@ public class BgpPeerTest extends AbstractConfig {
         Mockito.verify(this.future).cancel(true);
 
         final Neighbor emptyNeighbor = new NeighborBuilder().setNeighborAddress(NEIGHBOR_ADDRESS).build();
-        this.bgpPeer.start(this.rib, emptyNeighbor, this.mappingService, this.configurationWriter);
+        this.bgpPeer.start(this.rib, emptyNeighbor, this.tableTypeRegistry, this.configurationWriter);
         assertTrue(this.bgpPeer.containsEqualConfiguration(emptyNeighbor));
         this.bgpPeer.close();
     }
index eb4023c63bda4b4106744727c77a1eceb4783039..b1e1a715b81342fd552ed79801508d4f135e121e 100644 (file)
@@ -13,7 +13,6 @@ import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
 import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.AFI_SAFI;
 import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.AFI_SAFI_IPV4;
 import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.MD5_PASSWORD;
@@ -45,7 +44,7 @@ import org.mockito.MockitoAnnotations;
 import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
 import org.opendaylight.protocol.bgp.mode.impl.add.all.paths.AllPathSelection;
 import org.opendaylight.protocol.bgp.mode.impl.add.n.paths.AddPathBestNPathSelection;
-import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigMappingService;
+import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.RIB;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
@@ -158,7 +157,7 @@ public class OpenConfigMappingUtilTest {
     }
 
     @Mock
-    private BGPOpenConfigMappingService mappingService;
+    private BGPTableTypeRegistryConsumer tableTypeRegistry;
 
     @Mock
     private RIB rib;
@@ -166,18 +165,16 @@ public class OpenConfigMappingUtilTest {
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
-        Mockito.doReturn(Collections.singletonList(BGP_TABLE_TYPE_IPV4))
-            .when(this.mappingService).toTableTypes(any());
         Mockito.doReturn(java.util.Optional.of(BGP_TABLE_TYPE_IPV4))
-            .when(this.mappingService).toBgpTableType(IPV4UNICAST.class);
+            .when(this.tableTypeRegistry).getTableType(IPV4UNICAST.class);
         Mockito.doReturn(java.util.Optional.of(BGP_TABLE_TYPE_IPV6))
-            .when(this.mappingService).toBgpTableType(IPV6UNICAST.class);
+            .when(this.tableTypeRegistry).getTableType(IPV6UNICAST.class);
         Mockito.doReturn(java.util.Optional.of(new BgpTableTypeImpl(Ipv6AddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class)))
-            .when(this.mappingService).toBgpTableType(IPV6LABELLEDUNICAST.class);
-        Mockito.doReturn(java.util.Optional.of(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build()))
-            .when(this.mappingService).toAfiSafi(BGP_TABLE_TYPE_IPV4);
-        Mockito.doReturn(java.util.Optional.of(new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class).build()))
-            .when(this.mappingService).toAfiSafi(BGP_TABLE_TYPE_IPV6);
+            .when(this.tableTypeRegistry).getTableType(IPV6LABELLEDUNICAST.class);
+        Mockito.doReturn(java.util.Optional.of(IPV4UNICAST.class))
+            .when(this.tableTypeRegistry).getAfiSafiType(BGP_TABLE_TYPE_IPV4);
+        Mockito.doReturn(java.util.Optional.of(IPV6UNICAST.class))
+            .when(this.tableTypeRegistry).getAfiSafiType(BGP_TABLE_TYPE_IPV6);
         Mockito.doReturn(AS).when(this.rib).getLocalAs();
     }
 
@@ -303,7 +300,7 @@ public class OpenConfigMappingUtilTest {
     @Test
     public void testToAfiSafis() {
         final List<AfiSafi> afiSafis = OpenConfigMappingUtil.toAfiSafis(Lists.newArrayList(BGP_TABLE_TYPE_IPV4), (afisafi, tableType) -> afisafi,
-                this.mappingService);
+                this.tableTypeRegistry);
         Assert.assertEquals(Collections.singletonList(AFISAFI_IPV4), afiSafis);
     }
 
@@ -378,7 +375,7 @@ public class OpenConfigMappingUtilTest {
             .addAugmentation(AfiSafi2.class, new AfiSafi2Builder().setSendMax(Shorts.checkedCast(N_PATHS)).build()).build());
         families.add(new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class)
             .addAugmentation(AfiSafi2.class, new AfiSafi2Builder().setSendMax(Shorts.checkedCast(ALL_PATHS)).build()).build());
-        final Map<BgpTableType, PathSelectionMode> result = OpenConfigMappingUtil.toPathSelectionMode(families, this.mappingService);
+        final Map<BgpTableType, PathSelectionMode> result = OpenConfigMappingUtil.toPathSelectionMode(families, this.tableTypeRegistry);
         final Map<BgpTableType, PathSelectionMode> expected = new HashMap<>();
         expected.put(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class), ADD_PATH_BEST_N_PATH_SELECTION);
         expected.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class), ADD_PATH_BEST_ALL_PATH_SELECTION);
@@ -418,7 +415,7 @@ public class OpenConfigMappingUtilTest {
             .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.AfiSafi1.class,
                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.AfiSafi1Builder()
                     .setReceive(false).build()).build());
-        final List<AddressFamilies> result = OpenConfigMappingUtil.toAddPathCapability(families, this.mappingService);
+        final List<AddressFamilies> result = OpenConfigMappingUtil.toAddPathCapability(families, this.tableTypeRegistry);
         assertEquals(FAMILIES, result);
     }
 
@@ -428,7 +425,7 @@ public class OpenConfigMappingUtilTest {
         bgpTableKeyPsm.put(new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class), ADD_PATH_BEST_N_PATH_SELECTION);
         bgpTableKeyPsm.put(new TablesKey(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class), ADD_PATH_BEST_ALL_PATH_SELECTION);
 
-        final Global result = OpenConfigMappingUtil.fromRib(BGP_ID, CLUSTER_IDENTIFIER, RIB_ID, AS, TABLE_TYPES, bgpTableKeyPsm, this.mappingService);
+        final Global result = OpenConfigMappingUtil.fromRib(BGP_ID, CLUSTER_IDENTIFIER, RIB_ID, AS, TABLE_TYPES, bgpTableKeyPsm, this.tableTypeRegistry);
         final Global expected = new GlobalBuilder()
                 .setAfiSafis(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base.AfiSafisBuilder().setAfiSafi(AFISAFIS).build())
                 .setConfig(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base
@@ -443,7 +440,7 @@ public class OpenConfigMappingUtilTest {
 
     @Test
     public void fromBgpPeer() {
-        final Neighbor result = OpenConfigMappingUtil.fromBgpPeer(FAMILIES, TABLE_TYPES, 30, IPADDRESS, true, null, PORT_NUMBER, 30, AS, PeerRole.Ibgp, null, this.mappingService);
+        final Neighbor result = OpenConfigMappingUtil.fromBgpPeer(FAMILIES, TABLE_TYPES, 30, IPADDRESS, true, null, PORT_NUMBER, 30, AS, PeerRole.Ibgp, null, this.tableTypeRegistry);
         final List<AfiSafi> afisafis = new ArrayList<>();
         afisafis.add(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class)
             .addAugmentation(AfiSafi1.class, new AfiSafi1Builder().setReceive(true).setSendMax(Shorts.checkedCast(ALL_PATHS)).build()).build());
index a2cef0097a0a1ee846c0f7e0c08d319e9aae6da2..b85fbe6e6618b64024e13007813cf25f4dcb2f7a 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.protocol.bgp.rib.impl.config;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyList;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
@@ -123,8 +122,7 @@ public class RibImplTest extends AbstractConfig {
         final RibImpl ribImpl = new RibImpl(this.clusterSingletonServiceProvider, this.extension, this.dispatcher,
             this.bindingCodecTreeFactory, this.domDataBroker, this.schemaService);
         ribImpl.setServiceRegistration(this.serviceRegistration);
-        ribImpl.start(createGlobal(), "rib-test", this.mappingService, this.configurationWriter);
-        verify(this.mappingService).toTableTypes(anyList());
+        ribImpl.start(createGlobal(), "rib-test", this.tableTypeRegistry, this.configurationWriter);
         verify(this.extension).getClassLoadingStrategy();
         verify(this.domDataBroker).getSupportedExtensions();
         verify(this.clusterSingletonServiceProvider).registerClusterSingletonService(any());