Merge "Fixed announcing of endpoint location by vpp-renderer"
authorKeith Burns <alagalah@gmail.com>
Tue, 21 Jun 2016 23:27:13 +0000 (23:27 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 21 Jun 2016 23:27:13 +0000 (23:27 +0000)
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/VppEndpointLocationProvider.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java

index cfdd9a8d4a86a5d02447517cb8a2e593cb7a75fd..3cda5aecd6ed80490a39f458161db351d072e00a 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.groupbasedpolicy.renderer.vpp.util.MountedDataBrokerProv
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.LocationType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.vpp.endpoint.InterfaceTypeChoice;
@@ -252,10 +253,13 @@ public class InterfaceManager implements AutoCloseable {
                 String existingBridgeDomain = resolveBridgeDomain(optIface.get());
                 if (bridgeDomainName.equals(existingBridgeDomain)) {
                     LOG.debug("Bridge domain {} already exists on interface {}", bridgeDomainName, interfacePath);
-                    String nodePath = VppPathMapper.bridgeDomainToRestPath(bridgeDomainName);
-                    if (!nodePath.equals(epLoc.getExternalNode())) {
-                        vppEndpointLocationProvider.updateExternalNodeLocationForEndpoint(nodePath,
-                                epLoc.getExternalNodeMountPoint(), addrEpWithLoc.getKey());
+                    String bridgeDomainPath = VppPathMapper.bridgeDomainToRestPath(bridgeDomainName);
+                    if (!bridgeDomainPath.equals(epLoc.getExternalNode())) {
+                        vppEndpointLocationProvider.replaceLocationForEndpoint(new ExternalLocationCaseBuilder()
+                            .setExternalNode(bridgeDomainPath)
+                            .setExternalNodeMountPoint(vppNodeIid)
+                            .setExternalNodeConnector(interfacePath)
+                            .build(), addrEpWithLoc.getKey());
                     }
                     return Futures.immediateFuture(null);
                 }
@@ -270,9 +274,12 @@ public class InterfaceManager implements AutoCloseable {
 
                     @Override
                     public Void apply(Void input) {
-                        String nodePath = VppPathMapper.bridgeDomainToRestPath(bridgeDomainName);
-                        vppEndpointLocationProvider.updateExternalNodeLocationForEndpoint(nodePath,
-                                epLoc.getExternalNodeMountPoint(), addrEpWithLoc.getKey());
+                        String bridgeDomainPath = VppPathMapper.bridgeDomainToRestPath(bridgeDomainName);
+                        vppEndpointLocationProvider.replaceLocationForEndpoint(new ExternalLocationCaseBuilder()
+                                .setExternalNode(bridgeDomainPath)
+                                .setExternalNodeMountPoint(vppNodeIid)
+                                .setExternalNodeConnector(interfacePath)
+                                .build(), addrEpWithLoc.getKey());
                         return null;
                     }
                 }, netconfWorker);
@@ -332,8 +339,11 @@ public class InterfaceManager implements AutoCloseable {
                     LOG.debug("Bridge domain does not exist therefore it is cosidered as"
                             + "deleted for interface {}", interfacePath);
                     // bridge domain does not exist on interface so we consider job done
-                    vppEndpointLocationProvider.updateExternalNodeLocationForEndpoint(null,
-                            epLoc.getExternalNodeMountPoint(), addrEpWithLoc.getKey());
+                    vppEndpointLocationProvider.replaceLocationForEndpoint(new ExternalLocationCaseBuilder()
+                            .setExternalNode(null)
+                            .setExternalNodeMountPoint(vppNodeIid)
+                            .setExternalNodeConnector(interfacePath)
+                            .build(), addrEpWithLoc.getKey());
                     return Futures.immediateFuture(null);
                 }
 
@@ -345,8 +355,11 @@ public class InterfaceManager implements AutoCloseable {
 
                     @Override
                     public Void apply(Void input) {
-                        vppEndpointLocationProvider.updateExternalNodeLocationForEndpoint(null,
-                                epLoc.getExternalNodeMountPoint(), addrEpWithLoc.getKey());
+                        vppEndpointLocationProvider.replaceLocationForEndpoint(new ExternalLocationCaseBuilder()
+                                .setExternalNode(null)
+                                .setExternalNodeMountPoint(vppNodeIid)
+                                .setExternalNodeConnector(interfacePath)
+                                .build(), addrEpWithLoc.getKey());
                         return null;
                     }
                 }, netconfWorker);
index b9ddae02fa592f038945bcd03c1455b33ccd3dbf..6ca8e49695ac4a562e7e269297be4c03f14fb6fc 100644 (file)
@@ -9,7 +9,6 @@
 package org.opendaylight.groupbasedpolicy.renderer.vpp.iface;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
@@ -18,6 +17,7 @@ import org.opendaylight.groupbasedpolicy.renderer.vpp.util.KeyFactory;
 import org.opendaylight.groupbasedpolicy.util.IidFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.ProviderName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.LocationProvider;
@@ -27,7 +27,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_l
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocationKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpoint;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -131,17 +130,15 @@ public class VppEndpointLocationProvider implements AutoCloseable {
                 vppEndpoint.getContextId(), vppEndpoint.getContextType());
     }
 
-    public void updateExternalNodeLocationForEndpoint(@Nullable String nodePath,
-            InstanceIdentifier<?> externalNodeMountPoint, @Nonnull AddressEndpointWithLocationKey addrEpWithLocKey) {
+    public void replaceLocationForEndpoint(@Nonnull ExternalLocationCase location, @Nonnull AddressEndpointWithLocationKey addrEpWithLocKey) {
         ProviderAddressEndpointLocationKey provAddrEpLocKey =
                 KeyFactory.providerAddressEndpointLocationKey(addrEpWithLocKey);
         AbsoluteLocation absoluteLocation =
-                new AbsoluteLocationBuilder().setLocationType(new ExternalLocationCaseBuilder()
-                    .setExternalNodeMountPoint(externalNodeMountPoint).setExternalNode(nodePath).build()).build();
+                new AbsoluteLocationBuilder().setLocationType(location).build();
         ProviderAddressEndpointLocation providerAddressEndpointLocation = new ProviderAddressEndpointLocationBuilder()
             .setKey(provAddrEpLocKey).setAbsoluteLocation(absoluteLocation).build();
         WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
-        wTx.merge(LogicalDatastoreType.CONFIGURATION,
+        wTx.put(LogicalDatastoreType.CONFIGURATION,
                 IidFactory.providerAddressEndpointLocationIid(VPP_ENDPOINT_LOCATION_PROVIDER,
                         providerAddressEndpointLocation.getKey()),
                 providerAddressEndpointLocation);
@@ -150,13 +147,13 @@ public class VppEndpointLocationProvider implements AutoCloseable {
 
             @Override
             public void onSuccess(Void result) {
-                LOG.debug("{} merged location: {}", VPP_ENDPOINT_LOCATION_PROVIDER.getValue(),
+                LOG.debug("{} replaced location: {}", VPP_ENDPOINT_LOCATION_PROVIDER.getValue(),
                         providerAddressEndpointLocation);
             }
 
             @Override
             public void onFailure(Throwable t) {
-                LOG.error("{} failed to merge location: {}", VPP_ENDPOINT_LOCATION_PROVIDER.getValue(),
+                LOG.error("{} failed to replace location: {}", VPP_ENDPOINT_LOCATION_PROVIDER.getValue(),
                         providerAddressEndpointLocation, t);
             }
         });
index 7449070a41f58e5ccfca97526c07a90fddcb8149..48b26ec9c8276bebf593abf6aa9fa4ac0db9cf0f 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.groupbasedpolicy.renderer.vpp.policy;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.concurrent.TimeUnit;
 
 import javax.annotation.Nonnull;
 
@@ -62,7 +61,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.AsyncFunction;