BUG-4779: Openconfig mandatory descendant missing 86/31486/3
authorMilos Fabian <milfabia@cisco.com>
Thu, 17 Dec 2015 01:28:43 +0000 (02:28 +0100)
committerMilos Fabian <milfabia@cisco.com>
Thu, 17 Dec 2015 12:14:52 +0000 (12:14 +0000)
Make sure mandatory leaf is allways present.
Map RIB module configuration on OpenConfig Bgp top level container.

Change-Id: I5f28a5fa2924ec2ddc721c69f0b2a67fdf374f63
Signed-off-by: Milos Fabian <milfabia@cisco.com>
13 files changed:
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/BGPOpenConfig.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/comparator/GlobalComparator.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/comparator/OpenConfigComparatorFactory.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/moduleconfig/BGPAppPeerProvider.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/moduleconfig/BGPPeerProvider.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/moduleconfig/BGPRibImplProvider.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/openconfig/BGPConfigModuleMapperProvider.java
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/openconfig/BGPGlobalProviderImpl.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/BGPConfigHolderImplTest.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/comparator/GlobalComparatorTest.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/comparator/OpenConfigComparatorsTest.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/openconfig/BGPConfigModuleMapperProviderTest.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/openconfig/BGPGlobalProviderImplTest.java

index 1421ed49276c4be4654b4f9e60434be4726011e1..44dd28e753cb3fc666e3a40e63ae0c7ec4efe43f 100644 (file)
@@ -12,7 +12,6 @@ import javax.annotation.concurrent.GuardedBy;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
 import org.opendaylight.controller.md.sal.binding.api.MountPointService.MountPointListener;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
 import org.opendaylight.protocol.bgp.openconfig.impl.moduleconfig.BGPOpenConfigListener;
@@ -22,7 +21,7 @@ import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigProvider;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenconfigMapper;
 import org.opendaylight.protocol.bgp.openconfig.spi.InstanceConfiguration;
 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.Global;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -61,19 +60,14 @@ public final class BGPOpenConfig implements BindingAwareConsumer, AutoCloseable,
 
     public BGPOpenConfig() {
         configStateHolders = new BGPConfigStateStoreImpl();
-        configStateHolders.registerBGPConfigHolder(Global.class);
+        configStateHolders.registerBGPConfigHolder(Bgp.class);
         configStateHolders.registerBGPConfigHolder(Neighbor.class);
     }
 
     @Override
     public void onSessionInitialized(final ConsumerContext session) {
         dataBroker = session.getSALService(DataBroker.class);
-        try {
-            configModuleListener = new BGPConfigModuleMapperProvider(dataBroker, configStateHolders);
-        } catch (final TransactionCommitFailedException e) {
-            LOG.error("Failed to initialize application.", e);
-            throw new IllegalStateException(e);
-        }
+        configModuleListener = new BGPConfigModuleMapperProvider(dataBroker, configStateHolders);
         mountService = session.getSALService(MountPointService.class);
         mpListenerRegistration = mountService.registerListener(CONTROLLER_CONFIG_IID, this);
     }
index 27a1f406169bf053079f6741358d9e71ace768d7..ecc83d1028122402a2de07fc523240a1fb4b6cec 100644 (file)
@@ -13,14 +13,17 @@ import java.util.List;
 import java.util.Objects;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.OpenConfigComparator;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
+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;
 
-final class GlobalComparator implements OpenConfigComparator<Global> {
+final class GlobalComparator implements OpenConfigComparator<Bgp> {
 
     @Override
-    public boolean isSame(final Global global1, final Global global2) {
-        Preconditions.checkNotNull(global1);
-        Preconditions.checkNotNull(global2);
+    public boolean isSame(final Bgp bgp1, final Bgp bgp2) {
+        Preconditions.checkNotNull(bgp1);
+        Preconditions.checkNotNull(bgp2);
+        final Global global1 = bgp1.getGlobal();
+        final Global global2 = bgp2.getGlobal();
         //do not care about an order of collections' entries
         if (global1.getAfiSafis() != null && global2.getAfiSafis() != null) {
             final List<AfiSafi> afiSafiA = global1.getAfiSafis().getAfiSafi();
index 988f845fbb1706296acf8f9e4b1b368c918bf7b8..bf00fad37ec7ca53b79774978fa639fdd9f5b4ee 100644 (file)
@@ -11,13 +11,13 @@ package org.opendaylight.protocol.bgp.openconfig.impl.comparator;
 import com.google.common.collect.ImmutableMap;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.OpenConfigComparator;
 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.Global;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 public final class OpenConfigComparatorFactory {
 
     private static final ImmutableMap<Class<?>, OpenConfigComparator<? extends DataObject>> COMPARATORS = ImmutableMap.<Class<?>, OpenConfigComparator<? extends DataObject>>builder()
-            .put(Global.class, new GlobalComparator())
+            .put(Bgp.class, new GlobalComparator())
             .put(Neighbor.class, new NeighborComparator())
             .build();
 
index 7bd7cc613d869efb32a086a0b85411a60806d67b..9b44b19fc5788ec2377ba8ea21ad935a856f1199 100644 (file)
@@ -19,7 +19,7 @@ import org.opendaylight.protocol.bgp.openconfig.impl.spi.BGPConfigHolder;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.BGPConfigStateStore;
 import org.opendaylight.protocol.bgp.openconfig.impl.util.GlobalIdentifier;
 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.Global;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.ApplicationRibId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.bgp.rib.impl.rev130409.RibInstance;
@@ -49,14 +49,14 @@ final class BGPAppPeerProvider {
     };
 
     private final BGPConfigHolder<Neighbor> neighborState;
-    private final BGPConfigHolder<Global> globalState;
+    private final BGPConfigHolder<Bgp> globalState;
     private final BGPConfigModuleProvider configModuleOp;
     private final DataBroker dataBroker;
 
     public BGPAppPeerProvider(final BGPConfigStateStore configHolders, final BGPConfigModuleProvider configModuleWriter, final DataBroker dataBroker) {
         this.dataBroker = dataBroker;
         this.configModuleOp = Preconditions.checkNotNull(configModuleWriter);
-        this.globalState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Global.class));
+        this.globalState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Bgp.class));
         this.neighborState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Neighbor.class));
     }
 
index edc442dcd51c0684cf7cd2c2a28f22b18f8690e8..26f27644c2374ae353f55d9dee6e17b22a750788 100644 (file)
@@ -25,7 +25,7 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.n
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Timers;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Transport;
 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.Global;
+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.types.rev151009.PeerType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole;
@@ -65,14 +65,14 @@ final class BGPPeerProvider {
     };
 
     private final BGPConfigHolder<Neighbor> neighborState;
-    private final BGPConfigHolder<Global> globalState;
+    private final BGPConfigHolder<Bgp> globalState;
     private final BGPConfigModuleProvider configModuleOp;
     private final DataBroker dataBroker;
 
     public BGPPeerProvider(final BGPConfigStateStore configHolders, final BGPConfigModuleProvider configModuleWriter, final DataBroker dataBroker) {
         this.dataBroker = dataBroker;
         this.configModuleOp = Preconditions.checkNotNull(configModuleWriter);
-        this.globalState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Global.class));
+        this.globalState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Bgp.class));
         this.neighborState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Neighbor.class));
     }
 
index 2f695a66be4aa8537f72d3461110c007688d4cb8..d7251bb5bdee6d6a87bc79e40652395250571be6 100644 (file)
@@ -19,6 +19,8 @@ import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.BGPConfigHolder;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.BGPConfigStateStore;
 import org.opendaylight.protocol.bgp.openconfig.impl.util.GlobalIdentifier;
+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.BgpBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Global;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.bgp.rib.impl.rev130409.BgpTableType;
@@ -43,12 +45,12 @@ final class BGPRibImplProvider {
         }
     };
 
-    private final BGPConfigHolder<Global> globalState;
+    private final BGPConfigHolder<Bgp> globalState;
     private final BGPConfigModuleProvider configModuleWriter;
     private final DataBroker dataBroker;
 
     public BGPRibImplProvider(final BGPConfigStateStore configHolders, final BGPConfigModuleProvider configModuleWriter, final DataBroker dataBroker) {
-        this.globalState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Global.class));
+        this.globalState = Preconditions.checkNotNull(configHolders.getBGPConfigHolder(Bgp.class));
         this.configModuleWriter = Preconditions.checkNotNull(configModuleWriter);
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
     }
@@ -59,7 +61,7 @@ final class BGPRibImplProvider {
             try {
                 final ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
                 final Optional<Module> maybeModule = this.configModuleWriter.readModuleConfiguration(moduleKey, rwTx).get();
-                if (maybeModule.isPresent() && globalState.remove(moduleKey, removedGlobal)) {
+                if (maybeModule.isPresent() && globalState.remove(moduleKey, new BgpBuilder().setGlobal(removedGlobal).build())) {
                     this.configModuleWriter.removeModuleConfiguration(moduleKey, rwTx);
                 }
             } catch (final Exception e) {
@@ -71,7 +73,7 @@ final class BGPRibImplProvider {
 
     public void onGlobalModified(final Global modifiedGlobal) {
         final ModuleKey moduleKey = this.globalState.getModuleKey(GlobalIdentifier.GLOBAL_IDENTIFIER);
-        if (moduleKey != null && this.globalState.addOrUpdate(moduleKey, GlobalIdentifier.GLOBAL_IDENTIFIER, modifiedGlobal)) {
+        if (moduleKey != null && this.globalState.addOrUpdate(moduleKey, GlobalIdentifier.GLOBAL_IDENTIFIER, new BgpBuilder().setGlobal(modifiedGlobal).build())) {
             final ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction();
             try {
                 final Optional<Module> maybeModule = this.configModuleWriter.readModuleConfiguration(moduleKey, rTx).get();
index 99dfe44019a29cbf3ff42eace20f3b64bf2d87a2..fd2c783319083c32991a1cc311bf1b0ed589ac98 100644 (file)
@@ -8,10 +8,9 @@
 
 package org.opendaylight.protocol.bgp.openconfig.impl.openconfig;
 
-import static org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil.APPLICATION_PEER_GROUP_NAME;
 import static org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil.BGP_IID;
+
 import com.google.common.base.Preconditions;
-import java.util.Collections;
 import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
@@ -19,17 +18,10 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionChain;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.BGPConfigStateStore;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenConfigProvider;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPOpenconfigMapper;
 import org.opendaylight.protocol.bgp.openconfig.spi.InstanceConfiguration;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroup;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupBuilder;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupKey;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.BgpBuilder;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.NeighborsBuilder;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.PeerGroupsBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,20 +29,12 @@ public final class BGPConfigModuleMapperProvider implements BGPOpenConfigProvide
 
     private static final Logger LOG = LoggerFactory.getLogger(BGPConfigModuleMapperProvider.class);
 
-    private static final PeerGroup APP_PEER_GROUP = new PeerGroupBuilder().setPeerGroupName(APPLICATION_PEER_GROUP_NAME)
-            .setKey(new PeerGroupKey(APPLICATION_PEER_GROUP_NAME)).build();
-
     private final BindingTransactionChain txChain;
     private final BGPConfigMapperRegistry configMapperRegistry = new BGPConfigMapperRegistry();
 
-    public BGPConfigModuleMapperProvider(final DataBroker dataBroker, final BGPConfigStateStore configStateHolders) throws TransactionCommitFailedException {
+    public BGPConfigModuleMapperProvider(final DataBroker dataBroker, final BGPConfigStateStore configStateHolders) {
         Preconditions.checkNotNull(configStateHolders);
         this.txChain = Preconditions.checkNotNull(dataBroker).createTransactionChain(this);
-        final WriteTransaction wTx = this.txChain.newWriteOnlyTransaction();
-        wTx.put(LogicalDatastoreType.CONFIGURATION, BGP_IID,
-                new BgpBuilder().setNeighbors(new NeighborsBuilder().build()).setPeerGroups(
-                        new PeerGroupsBuilder().setPeerGroup(Collections.singletonList(APP_PEER_GROUP)).build()).build());
-        wTx.submit().checkedGet();
         configMapperRegistry.registerOpenConfigMapper(new BGPGlobalProviderImpl(txChain, configStateHolders));
         configMapperRegistry.registerOpenConfigMapper(new BGPNeighborProviderImpl(txChain, configStateHolders));
         configMapperRegistry.registerOpenConfigMapper(new BGPAppNeighborProviderImpl(txChain, configStateHolders));
index ce0d73bf0d67415cb9b3877d9d68a4f06177e2a8..3c47bf3b77b6d6bce3971defdece8b71697e9cd2 100644 (file)
@@ -8,7 +8,10 @@
 
 package org.opendaylight.protocol.bgp.openconfig.impl.openconfig;
 
+import static org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil.APPLICATION_PEER_GROUP_NAME;
 import static org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil.BGP_IID;
+
+import java.util.Collections;
 import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain;
 import org.opendaylight.protocol.bgp.openconfig.impl.spi.BGPConfigStateStore;
 import org.opendaylight.protocol.bgp.openconfig.impl.util.GlobalIdentifier;
@@ -16,23 +19,31 @@ import org.opendaylight.protocol.bgp.openconfig.impl.util.OpenConfigUtil;
 import org.opendaylight.protocol.bgp.openconfig.spi.pojo.BGPRibInstanceConfiguration;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base.AfiSafisBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroup;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupKey;
+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.BgpBuilder;
 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.NeighborsBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.PeerGroupsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.bgp.rib.impl.rev130409.RibImpl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.modules.ModuleKey;
 import org.opendaylight.yangtools.concepts.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-final class BGPGlobalProviderImpl extends AbstractBGPOpenConfigMapper<BGPRibInstanceConfiguration, Global> {
+final class BGPGlobalProviderImpl extends AbstractBGPOpenConfigMapper<BGPRibInstanceConfiguration, Bgp> {
 
-    private static final InstanceIdentifier<Global> GLOBAL_IID = BGP_IID.child(Global.class);
+    private static final PeerGroup APP_PEER_GROUP = new PeerGroupBuilder().setPeerGroupName(APPLICATION_PEER_GROUP_NAME)
+            .setKey(new PeerGroupKey(APPLICATION_PEER_GROUP_NAME)).build();
 
     public BGPGlobalProviderImpl(final BindingTransactionChain txChain, final BGPConfigStateStore stateHolders) {
-        super(txChain, stateHolders, Global.class);
+        super(txChain, stateHolders, Bgp.class);
     }
 
     @Override
-    public Global apply(final BGPRibInstanceConfiguration configuration) {
+    public Bgp apply(final BGPRibInstanceConfiguration configuration) {
         return toGlobalConfiguration(configuration);
     }
 
@@ -42,12 +53,12 @@ final class BGPGlobalProviderImpl extends AbstractBGPOpenConfigMapper<BGPRibInst
     }
 
     @Override
-    protected InstanceIdentifier<Global> getInstanceIdentifier(final Identifier key) {
-        return GLOBAL_IID;
+    protected InstanceIdentifier<Bgp> getInstanceIdentifier(final Identifier key) {
+        return BGP_IID;
     }
 
     @Override
-    public Identifier keyForConfiguration(final Global global) {
+    public Identifier keyForConfiguration(final Bgp bgp) {
         return GlobalIdentifier.GLOBAL_IDENTIFIER;
     }
 
@@ -56,13 +67,17 @@ final class BGPGlobalProviderImpl extends AbstractBGPOpenConfigMapper<BGPRibInst
         return BGPRibInstanceConfiguration.class;
     }
 
-    private static Global toGlobalConfiguration(final BGPRibInstanceConfiguration config) {
-        return new GlobalBuilder()
-        .setAfiSafis(new AfiSafisBuilder().setAfiSafi(OpenConfigUtil.toAfiSafis(config.getTableTypes())).build())
-        .setConfig(
-            new ConfigBuilder()
+    private static Bgp toGlobalConfiguration(final BGPRibInstanceConfiguration config) {
+        final BgpBuilder bgpBuilder = new BgpBuilder();
+        bgpBuilder.setNeighbors(new NeighborsBuilder().build());
+        bgpBuilder.setPeerGroups(new PeerGroupsBuilder().setPeerGroup(Collections.singletonList(APP_PEER_GROUP)).build());
+        final Global global = new GlobalBuilder()
+            .setAfiSafis(new AfiSafisBuilder().setAfiSafi(OpenConfigUtil.toAfiSafis(config.getTableTypes())).build())
+            .setConfig(new ConfigBuilder()
                 .setAs(config.getLocalAs())
                 .setRouterId(config.getBgpRibId()).build()).build();
+        bgpBuilder.setGlobal(global);
+        return bgpBuilder.build();
     }
 
 }
index 7a348d92d708d51c8f02adea29fab07291c866b9..a74f748d9ad22ccb104a2c2e1ac938a2726d9ade 100644 (file)
@@ -16,13 +16,14 @@ import org.junit.Test;
 import org.opendaylight.protocol.bgp.openconfig.impl.comparator.OpenConfigComparatorFactory;
 import org.opendaylight.protocol.bgp.openconfig.impl.util.GlobalIdentifier;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base.ConfigBuilder;
-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;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.BgpBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.GlobalBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.bgp.openconfig.rev150718.OpenconfigBgp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.modules.ModuleKey;
 
 public class BGPConfigHolderImplTest {
-    private static final BGPConfigHolderImpl<Global> HOLDER = new BGPConfigHolderImpl<Global>(OpenConfigComparatorFactory.getComparator(Global.class));
+    private static final BGPConfigHolderImpl<Bgp> HOLDER = new BGPConfigHolderImpl<Bgp>(OpenConfigComparatorFactory.getComparator(Bgp.class));
 
     @Test
     public void test() {
@@ -32,8 +33,8 @@ public class BGPConfigHolderImplTest {
         final ModuleKey moduleKey2 = new ModuleKey("key2", OpenconfigBgp.class);
         assertNull(HOLDER.getKey(moduleKey));
 
-        final Global obj1 = new GlobalBuilder().build();
-        final Global obj2 = new GlobalBuilder().setConfig(new ConfigBuilder().build()).build();
+        final Bgp obj1 = new BgpBuilder().setGlobal(new GlobalBuilder().build()).build();
+        final Bgp obj2 = new BgpBuilder().setGlobal(new GlobalBuilder().setConfig(new ConfigBuilder().build()).build()).build();
         assertTrue(HOLDER.addOrUpdate(moduleKey, GlobalIdentifier.GLOBAL_IDENTIFIER, obj1));
         assertFalse(HOLDER.addOrUpdate(moduleKey, GlobalIdentifier.GLOBAL_IDENTIFIER, obj1));
         assertEquals(moduleKey, HOLDER.getModuleKey(GlobalIdentifier.GLOBAL_IDENTIFIER));
index 4c837777a07da4978091fd3d87ef65f14d3c8393..dafec2ef7e7efd3c88a616170694e19ec0cdd6ef 100644 (file)
@@ -15,6 +15,7 @@ import com.google.common.collect.Lists;
 import org.junit.Test;
 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.global.base.AfiSafisBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.BgpBuilder;
 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.types.rev151009.IPV4UNICAST;
@@ -26,13 +27,15 @@ public class GlobalComparatorTest {
 
     @Test
     public void testIsSamePositiveSimple() {
+        final BgpBuilder bgpBuilder = new BgpBuilder();
         final Global a = new GlobalBuilder().build();
         final Global b = new GlobalBuilder().build();
-        assertTrue(COMPARATOR.isSame(a, b));
+        assertTrue(COMPARATOR.isSame(bgpBuilder.setGlobal(a).build(), bgpBuilder.setGlobal(b).build()));
     }
 
     @Test
     public void testIsSamePositiveCollection() {
+        final BgpBuilder bgpBuilder = new BgpBuilder();
         final Global a = new GlobalBuilder().setAfiSafis(new AfiSafisBuilder()
             .setAfiSafi(Lists.newArrayList(
                     new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build(),
@@ -43,11 +46,12 @@ public class GlobalComparatorTest {
                 new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class).build(),
                 new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build()))
             .build()).build();
-        assertTrue(COMPARATOR.isSame(a, b));
+        assertTrue(COMPARATOR.isSame(bgpBuilder.setGlobal(a).build(), bgpBuilder.setGlobal(b).build()));
     }
 
     @Test
     public void testIsSameNegativeCollectionSize() {
+        final BgpBuilder bgpBuilder = new BgpBuilder();
         final Global a = new GlobalBuilder().setAfiSafis(new AfiSafisBuilder()
             .setAfiSafi(Lists.newArrayList(
                     new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build(),
@@ -57,11 +61,12 @@ public class GlobalComparatorTest {
             .setAfiSafi(Lists.newArrayList(
                 new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class).build()))
             .build()).build();
-        assertFalse(COMPARATOR.isSame(a, b));
+        assertFalse(COMPARATOR.isSame(bgpBuilder.setGlobal(a).build(), bgpBuilder.setGlobal(b).build()));
     }
 
     @Test
     public void testIsSameNegativeCollectionContent() {
+        final BgpBuilder bgpBuilder = new BgpBuilder();
         final Global a = new GlobalBuilder().setAfiSafis(new AfiSafisBuilder()
             .setAfiSafi(Lists.newArrayList(
                     new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build()))
@@ -70,7 +75,7 @@ public class GlobalComparatorTest {
             .setAfiSafi(Lists.newArrayList(
                 new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class).build()))
             .build()).build();
-        assertFalse(COMPARATOR.isSame(a, b));
+        assertFalse(COMPARATOR.isSame(bgpBuilder.setGlobal(a).build(), bgpBuilder.setGlobal(b).build()));
     }
 
 }
index 1238d2ffa1eb0c0f75bcb885c3cf5610cc81bd9f..8f5b23f9454cace5072f6fa0c4121b43344bd2ab 100644 (file)
@@ -13,14 +13,14 @@ import static org.junit.Assert.assertNull;
 
 import org.junit.Test;
 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.Global;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 public class OpenConfigComparatorsTest {
 
     @Test
     public void testGetComparatorGlobal() {
-        assertNotNull(OpenConfigComparatorFactory.getComparator(Global.class));
+        assertNotNull(OpenConfigComparatorFactory.getComparator(Bgp.class));
     }
 
     @Test
index a8c5d57def51cc52267ddff1795da05aafd2ddc5..dcc6246461900c4eaaee0fcd35efa9b162453ad2 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.protocol.bgp.openconfig.impl.openconfig;
 
 import static org.junit.Assert.assertTrue;
+
 import com.google.common.util.concurrent.CheckedFuture;
 import org.junit.Before;
 import org.junit.Test;
@@ -72,7 +73,7 @@ public class BGPConfigModuleMapperProviderTest {
     public void testClose() throws Exception {
         this.mapperProvider.close();
         Mockito.verify(this.myTx).delete(Mockito.any(LogicalDatastoreType.class), Mockito.any(InstanceIdentifier.class));
-        Mockito.verify(this.myTx, Mockito.times(2)).submit();
+        Mockito.verify(this.myTx, Mockito.times(1)).submit();
         Mockito.verify(this.txChain).close();
     }
 
index 201757149ac4f15074a848088f963a23c3e967d5..aed8702a2fa41b13ec610b62438e5f9020962ad8 100644 (file)
@@ -25,9 +25,13 @@ import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 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.global.base.AfiSafisBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupBuilder;
 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.BgpBuilder;
 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.NeighborsBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.PeerGroupsBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateAddressFamily;
@@ -59,25 +63,30 @@ public class BGPGlobalProviderImplTest {
 
     @Test
     public void testApply() {
-        final Global global = this.globalProvider.apply(new BGPRibInstanceConfiguration(new InstanceConfigurationIdentifier("instanceName"), new AsNumber(1L),
+        final Bgp bgp = this.globalProvider.apply(new BGPRibInstanceConfiguration(new InstanceConfigurationIdentifier("instanceName"), new AsNumber(1L),
                 new Ipv4Address("1.2.3.4"), null,
                 Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class))));
-        final Global expectedGlobal = new GlobalBuilder()
+        final BgpBuilder bgpBuilder = new BgpBuilder();
+        bgpBuilder.setNeighbors(new NeighborsBuilder().build());
+        bgpBuilder.setPeerGroups(new PeerGroupsBuilder().setPeerGroup(
+                Collections.singletonList(new PeerGroupBuilder().setPeerGroupName("application-peers").build())).build());
+        final Global global = new GlobalBuilder()
             .setAfiSafis(
                     new AfiSafisBuilder().setAfiSafi(Collections.singletonList(new AfiSafiBuilder().setAfiSafiName(Linkstate.class).build())).build())
             .setConfig(new ConfigBuilder().setRouterId(new Ipv4Address("1.2.3.4")).setAs(new AsNumber(1L)).build())
             .build();
-        assertEquals(expectedGlobal, global);
+        bgpBuilder.setGlobal(global);
+        assertEquals(bgpBuilder.build(), bgp);
     }
 
     @Test
     public void testGetInstanceIdentifierString() {
-        assertEquals(InstanceIdentifier.create(Bgp.class).child(Global.class), globalProvider.getInstanceIdentifier(null));
+        assertEquals(InstanceIdentifier.create(Bgp.class), globalProvider.getInstanceIdentifier(null));
     }
 
     @Test
     public void testKeyForConfigurationGlobal() {
-        final GlobalIdentifier globalId = (GlobalIdentifier) this.globalProvider.keyForConfiguration(new GlobalBuilder().build());
+        final GlobalIdentifier globalId = (GlobalIdentifier) this.globalProvider.keyForConfiguration(new BgpBuilder().build());
         assertEquals(GlobalIdentifier.GLOBAL_IDENTIFIER, globalId);
         assertEquals("GLOBAL", globalId.getName());
     }