From: Matej Perina Date: Tue, 17 Jan 2017 15:33:24 +0000 (+0000) Subject: remove redundant parent data with last child X-Git-Tag: release/carbon~34^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F36%2F49536%2F5;p=groupbasedpolicy.git remove redundant parent data with last child Change-Id: If833e1a6c9bce23834f15983ed1a620c39fed9c8 Signed-off-by: Matej Perina --- diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/location/resolver/LocationResolver.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/location/resolver/LocationResolver.java index 9e30d7d2e..02f5419e5 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/location/resolver/LocationResolver.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/location/resolver/LocationResolver.java @@ -128,6 +128,10 @@ public class LocationResolver implements ClusteredDataTreeChangeListener iid = IidFactory.addressEndpointLocationIid(epKey); + wtx.delete(LogicalDatastoreType.OPERATIONAL, iid); + } } for (ProviderContainmentEndpointLocation containmentEndpoint : nullToEmpty( provider.getProviderContainmentEndpointLocation())) { diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java index 6c5bf5df7..a95779a83 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java @@ -28,6 +28,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.groupbasedpolicy.renderer.vpp.api.BridgeDomainManager; import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory; +import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.Config; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.bridge.domain.base.attributes.PhysicalLocationRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.GbpBridgeDomain; @@ -326,10 +327,21 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager { public ListenableFuture removeBridgeDomainFromVppNode(@Nonnull final String bridgeDomainName, @Nonnull final NodeId vppNode) { LOG.info("Removing bridge domain {} from VPP node {}", bridgeDomainName, vppNode); + InstanceIdentifier topologyIid = + VppIidFactory.getTopologyIid(new TopologyKey(new TopologyId(bridgeDomainName))); + ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction(); + Optional topologyOpt = + DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, topologyIid, rTx); WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); InstanceIdentifier nodeIid = VppIidFactory.getNodeIid(new TopologyKey(new TopologyId(bridgeDomainName)), new NodeKey(vppNode)); wTx.delete(LogicalDatastoreType.CONFIGURATION, nodeIid); + if (topologyOpt.isPresent()) { + Topology topology = topologyOpt.get(); + if(topology.getNode() == null || topology.getNode().size() == 1) { + wTx.delete(LogicalDatastoreType.CONFIGURATION, topologyIid); + } + } SettableFuture future = SettableFuture.create(); Futures.addCallback(wTx.submit(), new FutureCallback() {