Committed by
Gerrit Code Review
[ONOS-4843] [ONOS-4815]Tunnels are creating even though bandwidth not satisfied …
…for RSVP in resilience case Change-Id: Ia119620d285055b85f66815c144bcd22ef27f2e8
Showing
5 changed files
with
32 additions
and
28 deletions
... | @@ -65,8 +65,6 @@ public class PceUpdatePathCommand extends AbstractShellCommand { | ... | @@ -65,8 +65,6 @@ public class PceUpdatePathCommand extends AbstractShellCommand { |
65 | constrntList.add(BandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit.valueOf("BPS"))); | 65 | constrntList.add(BandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit.valueOf("BPS"))); |
66 | } | 66 | } |
67 | 67 | ||
68 | - // Assign cost | ||
69 | - if (cost != 0) { | ||
70 | // Cost validation | 68 | // Cost validation |
71 | if ((cost < 1) || (cost > 2)) { | 69 | if ((cost < 1) || (cost > 2)) { |
72 | error("The cost attribute value is either IGP cost(1) or TE cost(2)."); | 70 | error("The cost attribute value is either IGP cost(1) or TE cost(2)."); |
... | @@ -74,7 +72,6 @@ public class PceUpdatePathCommand extends AbstractShellCommand { | ... | @@ -74,7 +72,6 @@ public class PceUpdatePathCommand extends AbstractShellCommand { |
74 | } | 72 | } |
75 | CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1]; | 73 | CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1]; |
76 | constrntList.add(CostConstraint.of(costType)); | 74 | constrntList.add(CostConstraint.of(costType)); |
77 | - } | ||
78 | 75 | ||
79 | if (!service.updatePath(TunnelId.valueOf(id), constrntList)) { | 76 | if (!service.updatePath(TunnelId.valueOf(id), constrntList)) { |
80 | error("Path updation failed."); | 77 | error("Path updation failed."); | ... | ... |
... | @@ -508,7 +508,7 @@ public class PceManager implements PceService { | ... | @@ -508,7 +508,7 @@ public class PceManager implements PceService { |
508 | } | 508 | } |
509 | 509 | ||
510 | if (existingBwValue != null) { | 510 | if (existingBwValue != null) { |
511 | - if (bwConstraintValue == 0) { | 511 | + if (bwConstraintValue == 0 && bwConstraint != null) { |
512 | bwConstraintValue = existingBwValue.bps(); | 512 | bwConstraintValue = existingBwValue.bps(); |
513 | } | 513 | } |
514 | //If bandwidth constraints not specified , take existing bandwidth for shared bandwidth calculation | 514 | //If bandwidth constraints not specified , take existing bandwidth for shared bandwidth calculation |
... | @@ -862,7 +862,12 @@ public class PceManager implements PceService { | ... | @@ -862,7 +862,12 @@ public class PceManager implements PceService { |
862 | // 1. Release old tunnel's bandwidth. | 862 | // 1. Release old tunnel's bandwidth. |
863 | resourceService.release(pceStore.getTunnelInfo(oldTunnel.tunnelId()).tunnelConsumerId()); | 863 | resourceService.release(pceStore.getTunnelInfo(oldTunnel.tunnelId()).tunnelConsumerId()); |
864 | 864 | ||
865 | - // 2. Release new tunnel's bandwidth | 865 | + // 2. Release new tunnel's bandwidth, if new tunnel bandwidth is allocated |
866 | + if (pceStore.getTunnelInfo(newTunnel.tunnelId()) == null) { | ||
867 | + //If bandwidth for new tunnel is not allocated i,e 0 then no need to allocate | ||
868 | + return; | ||
869 | + } | ||
870 | + | ||
866 | ResourceConsumer consumer = pceStore.getTunnelInfo(newTunnel.tunnelId()).tunnelConsumerId(); | 871 | ResourceConsumer consumer = pceStore.getTunnelInfo(newTunnel.tunnelId()).tunnelConsumerId(); |
867 | resourceService.release(consumer); | 872 | resourceService.release(consumer); |
868 | 873 | ||
... | @@ -1205,7 +1210,7 @@ public class PceManager implements PceService { | ... | @@ -1205,7 +1210,7 @@ public class PceManager implements PceService { |
1205 | localLspIdFreeList.add(Short.valueOf(tunnel.annotations().value(LOCAL_LSP_ID))); | 1210 | localLspIdFreeList.add(Short.valueOf(tunnel.annotations().value(LOCAL_LSP_ID))); |
1206 | } | 1211 | } |
1207 | // If not zero bandwidth, and delegated (initiated LSPs will also be delegated). | 1212 | // If not zero bandwidth, and delegated (initiated LSPs will also be delegated). |
1208 | - if (Double.parseDouble(tunnel.annotations().value(BANDWIDTH)) != 0.0 | 1213 | + if (Float.parseFloat(tunnel.annotations().value(BANDWIDTH)) != 0 |
1209 | && mastershipService.getLocalRole(tunnel.path().src().deviceId()) == MastershipRole.MASTER) { | 1214 | && mastershipService.getLocalRole(tunnel.path().src().deviceId()) == MastershipRole.MASTER) { |
1210 | releaseBandwidth(tunnel); | 1215 | releaseBandwidth(tunnel); |
1211 | } | 1216 | } | ... | ... |
... | @@ -115,8 +115,8 @@ public final class PceccTunnelInfo { | ... | @@ -115,8 +115,8 @@ public final class PceccTunnelInfo { |
115 | public String toString() { | 115 | public String toString() { |
116 | return MoreObjects.toStringHelper(getClass()) | 116 | return MoreObjects.toStringHelper(getClass()) |
117 | .omitNullValues() | 117 | .omitNullValues() |
118 | - .add("DeviceLabelInfoList", lspLocalLabelInfoList.toString()) | 118 | + .add("DeviceLabelInfoList", lspLocalLabelInfoList) |
119 | - .add("TunnelConsumerId", tunnelConsumerId.toString()) | 119 | + .add("TunnelConsumerId", tunnelConsumerId) |
120 | .toString(); | 120 | .toString(); |
121 | } | 121 | } |
122 | } | 122 | } | ... | ... |
... | @@ -1244,14 +1244,12 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1244,14 +1244,12 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1244 | tlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes()); | 1244 | tlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes()); |
1245 | llOptionalTlv.add(tlv); | 1245 | llOptionalTlv.add(tlv); |
1246 | } | 1246 | } |
1247 | - | ||
1248 | boolean delegated = (tunnel.annotations().value(DELEGATE) == null) ? false | 1247 | boolean delegated = (tunnel.annotations().value(DELEGATE) == null) ? false |
1249 | : Boolean.valueOf(tunnel.annotations() | 1248 | : Boolean.valueOf(tunnel.annotations() |
1250 | .value(DELEGATE)); | 1249 | .value(DELEGATE)); |
1251 | boolean initiated = (tunnel.annotations().value(PCE_INIT) == null) ? false | 1250 | boolean initiated = (tunnel.annotations().value(PCE_INIT) == null) ? false |
1252 | : Boolean.valueOf(tunnel.annotations() | 1251 | : Boolean.valueOf(tunnel.annotations() |
1253 | .value(PCE_INIT)); | 1252 | .value(PCE_INIT)); |
1254 | - | ||
1255 | // build lsp object | 1253 | // build lsp object |
1256 | PcepLspObject lspobj = pc.factory().buildLspObject().setAFlag(true) | 1254 | PcepLspObject lspobj = pc.factory().buildLspObject().setAFlag(true) |
1257 | .setPlspId(Integer.valueOf(tunnel.annotations().value(PLSP_ID))) | 1255 | .setPlspId(Integer.valueOf(tunnel.annotations().value(PLSP_ID))) |
... | @@ -1260,7 +1258,6 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1260,7 +1258,6 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1260 | .setOptionalTlv(llOptionalTlv).build(); | 1258 | .setOptionalTlv(llOptionalTlv).build(); |
1261 | // build ero object | 1259 | // build ero object |
1262 | PcepEroObject eroobj = pc.factory().buildEroObject().setSubObjects(llSubObjects).build(); | 1260 | PcepEroObject eroobj = pc.factory().buildEroObject().setSubObjects(llSubObjects).build(); |
1263 | - | ||
1264 | float iBandwidth = DEFAULT_BANDWIDTH_VALUE; | 1261 | float iBandwidth = DEFAULT_BANDWIDTH_VALUE; |
1265 | if (tunnel.annotations().value(BANDWIDTH) != null) { | 1262 | if (tunnel.annotations().value(BANDWIDTH) != null) { |
1266 | iBandwidth = Float.parseFloat(tunnel.annotations().value(BANDWIDTH)); | 1263 | iBandwidth = Float.parseFloat(tunnel.annotations().value(BANDWIDTH)); |
... | @@ -1455,10 +1452,8 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1455,10 +1452,8 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1455 | } | 1452 | } |
1456 | 1453 | ||
1457 | private SparseAnnotations getAnnotations(PcepLspObject lspObj, StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv, | 1454 | private SparseAnnotations getAnnotations(PcepLspObject lspObj, StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv, |
1458 | - float bandwidth, LspType lspType, String costType, boolean isPceInit) { | 1455 | + String bandwidth, LspType lspType, String costType, boolean isPceInit) { |
1459 | - | ||
1460 | Builder builder = DefaultAnnotations.builder(); | 1456 | Builder builder = DefaultAnnotations.builder(); |
1461 | - | ||
1462 | /* | 1457 | /* |
1463 | * [RFC 5440] The absence of the METRIC object MUST be interpreted by the PCE as a path computation request | 1458 | * [RFC 5440] The absence of the METRIC object MUST be interpreted by the PCE as a path computation request |
1464 | * for which no constraints need be applied to any of the metrics. | 1459 | * for which no constraints need be applied to any of the metrics. |
... | @@ -1471,8 +1466,11 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1471,8 +1466,11 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1471 | builder.set(PCE_INIT, String.valueOf(isPceInit)); | 1466 | builder.set(PCE_INIT, String.valueOf(isPceInit)); |
1472 | } | 1467 | } |
1473 | 1468 | ||
1469 | + if (bandwidth != null) { | ||
1470 | + builder.set(BANDWIDTH, bandwidth); | ||
1471 | + } | ||
1472 | + | ||
1474 | SparseAnnotations annotations = builder | 1473 | SparseAnnotations annotations = builder |
1475 | - .set(BANDWIDTH, (new Float(bandwidth)).toString()) | ||
1476 | .set(LSP_SIG_TYPE, lspType.name()) | 1474 | .set(LSP_SIG_TYPE, lspType.name()) |
1477 | .set(PCC_TUNNEL_ID, String.valueOf(ipv4LspIdenTlv.getTunnelId())) | 1475 | .set(PCC_TUNNEL_ID, String.valueOf(ipv4LspIdenTlv.getTunnelId())) |
1478 | .set(PLSP_ID, String.valueOf(lspObj.getPlspId())) | 1476 | .set(PLSP_ID, String.valueOf(lspObj.getPlspId())) |
... | @@ -1598,6 +1596,7 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1598,6 +1596,7 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1598 | new LspKey(lspObj.getPlspId(), ipv4LspIdenTlv.getLspId()), lspObj.getDFlag()); | 1596 | new LspKey(lspObj.getPlspId(), ipv4LspIdenTlv.getLspId()), lspObj.getDFlag()); |
1599 | } | 1597 | } |
1600 | Tunnel tunnel = null; | 1598 | Tunnel tunnel = null; |
1599 | + SparseAnnotations oldTunnelAnnotations = null; | ||
1601 | // Asynchronous status change message from PCC for LSP reported earlier. | 1600 | // Asynchronous status change message from PCC for LSP reported earlier. |
1602 | for (Tunnel tunnelObj : tunnelQueryResult) { | 1601 | for (Tunnel tunnelObj : tunnelQueryResult) { |
1603 | if (tunnelObj.annotations().value(PLSP_ID) == null) { | 1602 | if (tunnelObj.annotations().value(PLSP_ID) == null) { |
... | @@ -1615,13 +1614,17 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1615,13 +1614,17 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1615 | } | 1614 | } |
1616 | continue; | 1615 | continue; |
1617 | } | 1616 | } |
1618 | - if ((Integer.valueOf(tunnelObj.annotations().value(PLSP_ID)) == lspObj.getPlspId()) && (Integer | 1617 | + if ((Integer.valueOf(tunnelObj.annotations().value(PLSP_ID)) == lspObj.getPlspId())) { |
1618 | + if ((Integer | ||
1619 | .valueOf(tunnelObj.annotations().value(LOCAL_LSP_ID)) == ipv4LspIdenTlv.getLspId())) { | 1619 | .valueOf(tunnelObj.annotations().value(LOCAL_LSP_ID)) == ipv4LspIdenTlv.getLspId())) { |
1620 | tunnel = tunnelObj; | 1620 | tunnel = tunnelObj; |
1621 | - break; | 1621 | + } |
1622 | + if ((Integer | ||
1623 | + .valueOf(tunnelObj.annotations().value(LOCAL_LSP_ID)) != ipv4LspIdenTlv.getLspId())) { | ||
1624 | + oldTunnelAnnotations = (SparseAnnotations) tunnelObj.annotations(); | ||
1625 | + } | ||
1622 | } | 1626 | } |
1623 | } | 1627 | } |
1624 | - | ||
1625 | DefaultTunnelDescription td; | 1628 | DefaultTunnelDescription td; |
1626 | SparseAnnotations annotations = null; | 1629 | SparseAnnotations annotations = null; |
1627 | State tunnelState = PcepLspStatus.getTunnelStatusFromLspStatus(PcepLspStatus.values()[lspObj.getOFlag()]); | 1630 | State tunnelState = PcepLspStatus.getTunnelStatusFromLspStatus(PcepLspStatus.values()[lspObj.getOFlag()]); |
... | @@ -1638,7 +1641,14 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1638,7 +1641,14 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1638 | log.error("Ingress deviceId not found"); | 1641 | log.error("Ingress deviceId not found"); |
1639 | return; | 1642 | return; |
1640 | } | 1643 | } |
1641 | - annotations = getAnnotations(lspObj, ipv4LspIdenTlv, bandwidth, lspType, costType, lspObj.getCFlag()); | 1644 | + String tempBandwidth = null; |
1645 | + String temoCostType = null; | ||
1646 | + if (oldTunnelAnnotations != null) { | ||
1647 | + tempBandwidth = oldTunnelAnnotations.value(BANDWIDTH); | ||
1648 | + temoCostType = oldTunnelAnnotations.value(COST_TYPE); | ||
1649 | + } | ||
1650 | + annotations = getAnnotations(lspObj, ipv4LspIdenTlv, tempBandwidth, lspType, | ||
1651 | + temoCostType, lspObj.getCFlag()); | ||
1642 | td = new DefaultTunnelDescription(null, tunnelEndPointSrc, tunnelEndPointDst, MPLS, new DefaultGroupId( | 1652 | td = new DefaultTunnelDescription(null, tunnelEndPointSrc, tunnelEndPointDst, MPLS, new DefaultGroupId( |
1643 | 0), providerId, TunnelName.tunnelName(new String(pathNameTlv.getValue())), path, labelStack, | 1653 | 0), providerId, TunnelName.tunnelName(new String(pathNameTlv.getValue())), path, labelStack, |
1644 | annotations); | 1654 | annotations); |
... | @@ -1696,15 +1706,11 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid | ... | @@ -1696,15 +1706,11 @@ public class PcepTunnelProvider extends AbstractProvider implements TunnelProvid |
1696 | NetworkResource labelStack, | 1706 | NetworkResource labelStack, |
1697 | StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv) { | 1707 | StatefulIPv4LspIdentifiersTlv ipv4LspIdenTlv) { |
1698 | SparseAnnotations annotations = null; | 1708 | SparseAnnotations annotations = null; |
1699 | - Float bandwidth = 0.0f; | ||
1700 | DefaultTunnelDescription td; | 1709 | DefaultTunnelDescription td; |
1701 | - if (tunnel.annotations().value(BANDWIDTH) != null) { | ||
1702 | - bandwidth = Float.parseFloat(tunnel.annotations().value(BANDWIDTH)); | ||
1703 | - } | ||
1704 | boolean isPceInit = tunnel.annotations().value(PCE_INIT) == null ? false : | 1710 | boolean isPceInit = tunnel.annotations().value(PCE_INIT) == null ? false : |
1705 | Boolean.valueOf((tunnel.annotations().value(PCE_INIT))).booleanValue(); | 1711 | Boolean.valueOf((tunnel.annotations().value(PCE_INIT))).booleanValue(); |
1706 | annotations = getAnnotations(lspObj, ipv4LspIdenTlv, | 1712 | annotations = getAnnotations(lspObj, ipv4LspIdenTlv, |
1707 | - bandwidth, lspType, | 1713 | + tunnel.annotations().value(BANDWIDTH), lspType, |
1708 | tunnel.annotations().value(COST_TYPE), isPceInit); | 1714 | tunnel.annotations().value(COST_TYPE), isPceInit); |
1709 | td = new DefaultTunnelDescription(null, tunnel.src(), tunnel.dst(), MPLS, new DefaultGroupId( | 1715 | td = new DefaultTunnelDescription(null, tunnel.src(), tunnel.dst(), MPLS, new DefaultGroupId( |
1710 | 0), tunnel.providerId(), tunnel.tunnelName(), | 1716 | 0), tunnel.providerId(), tunnel.tunnelName(), | ... | ... |
... | @@ -89,7 +89,6 @@ import org.onosproject.pcep.controller.ClientCapability; | ... | @@ -89,7 +89,6 @@ import org.onosproject.pcep.controller.ClientCapability; |
89 | import org.onosproject.pcep.controller.LspKey; | 89 | import org.onosproject.pcep.controller.LspKey; |
90 | import org.onosproject.pcep.controller.PccId; | 90 | import org.onosproject.pcep.controller.PccId; |
91 | 91 | ||
92 | -import com.esotericsoftware.minlog.Log; | ||
93 | import com.google.common.collect.FluentIterable; | 92 | import com.google.common.collect.FluentIterable; |
94 | import com.google.common.collect.ImmutableSet; | 93 | import com.google.common.collect.ImmutableSet; |
95 | 94 | ||
... | @@ -225,7 +224,6 @@ public class PcepTunnelAddedTest { | ... | @@ -225,7 +224,6 @@ public class PcepTunnelAddedTest { |
225 | tunnel.path(), | 224 | tunnel.path(), |
226 | tunnel.resource(), | 225 | tunnel.resource(), |
227 | tunnel.annotations()); | 226 | tunnel.annotations()); |
228 | - Log.info("tunnel.annotations().toString() " + tunnel.annotations().toString()); | ||
229 | tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel); | 227 | tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel); |
230 | return id; | 228 | return id; |
231 | } | 229 | } |
... | @@ -251,7 +249,6 @@ public class PcepTunnelAddedTest { | ... | @@ -251,7 +249,6 @@ public class PcepTunnelAddedTest { |
251 | tunnel.resource(), | 249 | tunnel.resource(), |
252 | tunnel.annotations()); | 250 | tunnel.annotations()); |
253 | tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel); | 251 | tunnelService.tunnelIdAsKeyStore.put(id, storedTunnel); |
254 | - Log.info("tunnelService.tunnelIdAsKeyStore ++ " + tunnelService.tunnelIdAsKeyStore.toString()); | ||
255 | } | 252 | } |
256 | 253 | ||
257 | @Override | 254 | @Override |
... | @@ -269,7 +266,6 @@ public class PcepTunnelAddedTest { | ... | @@ -269,7 +266,6 @@ public class PcepTunnelAddedTest { |
269 | public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) { | 266 | public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) { |
270 | TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter)); | 267 | TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter)); |
271 | tunnelIdAsKeyStore.put(tunnelId, tunnel); | 268 | tunnelIdAsKeyStore.put(tunnelId, tunnel); |
272 | - Log.info("tunnelIdAsKeyStore insetup :: " + tunnelIdAsKeyStore.toString()); | ||
273 | return tunnelId; | 269 | return tunnelId; |
274 | } | 270 | } |
275 | 271 | ... | ... |
-
Please register or login to post a comment