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;
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);
}
@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);
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);
}
@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);
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;
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;
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;
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);
@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);
}
});
import java.util.Arrays;
import java.util.Collection;
-import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
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;