[ONOS] cherry picked from 1.6, bandwidth, CR and resilency fix
Change-Id: Ifd7bf886d2725db1f5e2f7a1eac739d9a446f868
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
index 5fc6a95..8d45e08 100644
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
+++ b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
@@ -66,6 +66,7 @@
import org.onosproject.net.PortNumber;
import org.onosproject.net.SparseAnnotations;
import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.link.LinkService;
import org.onosproject.net.provider.AbstractProvider;
import org.onosproject.net.provider.ProviderId;
import org.onosproject.pcep.api.PcepController;
@@ -213,6 +214,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected LinkService linkService;
+
TunnelProviderService service;
HashMap<String, TunnelId> tunnelMap = new HashMap<String, TunnelId>();
@@ -609,6 +613,7 @@
if (tunnel.type() == MPLS) {
pcepTunnelApiMapper.removeFromCoreTunnelRequestQueue(tunnel.id());
service.tunnelRemoved(tunnel);
+ return;
}
Tunnel tunnelOld = tunnelQueryById(tunnel.id());
@@ -1012,9 +1017,9 @@
//build ERO object
PcepEroObject eroobj = pc.factory().buildEroObject().setSubObjects(llSubObjects).build();
- int iBandwidth = DEFAULT_BANDWIDTH_VALUE;
+ float iBandwidth = DEFAULT_BANDWIDTH_VALUE;
if (tunnel.annotations().value(BANDWIDTH) != null) {
- iBandwidth = Float.floatToIntBits(Float.parseFloat(tunnel.annotations().value(BANDWIDTH)));
+ iBandwidth = Float.valueOf(tunnel.annotations().value(BANDWIDTH));
}
// build bandwidth object
PcepBandwidthObject bandwidthObject = pc.factory().buildBandwidthObject().setBandwidth(iBandwidth).build();
@@ -1680,8 +1685,8 @@
bandwidth, lspType,
tunnel.annotations().value(COST_TYPE));
td = new DefaultTunnelDescription(null, tunnelEndPointSrc, tunnelEndPointDst, MPLS, new DefaultGroupId(
- 0), providerId, TunnelName.tunnelName(new String(pathNameTlv.getValue())), path, labelStack,
- annotations);
+ 0), providerId, TunnelName.tunnelName(new String(pathNameTlv.getValue())),
+ tunnel.path(), labelStack, annotations);
tunnelUpdateInDelegatedCase(pccId, annotations, td, providerId);
}
removeOrUpdatetunnel(tunnel, pccId, lspObj, providerId, tunnelState);
@@ -1743,12 +1748,29 @@
IPv4SubObject ipv4SubObj = (IPv4SubObject) subObj;
if (!isSrcSet) {
- IpAddress srcIp = IpAddress.valueOf(ipv4SubObj.getIpAddress());
- src = new ConnectPoint(IpElementId.ipElement(srcIp), PortNumber.portNumber(0));
- isSrcSet = true;
- } else {
- IpAddress dstIp = IpAddress.valueOf(ipv4SubObj.getIpAddress());
- dst = new ConnectPoint(IpElementId.ipElement(dstIp), PortNumber.portNumber(0));
+ Iterable<Link> links = linkService.getActiveLinks();
+ for (Link l : links) {
+ if (l.src().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
+ src = l.src();
+ isSrcSet = true;
+ break;
+ } else if (l.dst().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
+ src = l.dst();
+ isSrcSet = true;
+ break;
+ }
+ }
+ } else {
+ Iterable<Link> links = linkService.getActiveLinks();
+ for (Link l : links) {
+ if (l.src().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
+ dst = l.src();
+ break;
+ } else if (l.dst().port().equals(PortNumber.portNumber(ipv4SubObj.getIpAddress()))) {
+ dst = l.dst();
+ break;
+ }
+ }
Link link = DefaultLink.builder()
.providerId(providerId)
.src(src)