RA: Add 2 fields in RA parameters from DG context 66/122566/1
authorStan Bonev (sb5356) <sb5356@att.com>
Thu, 15 Jul 2021 17:47:22 +0000 (13:47 -0400)
committerDan Timoney <dtimoney@att.com>
Thu, 15 Jul 2021 18:31:46 +0000 (18:31 +0000)
Issue-ID: CCSDK-3372
Signed-off-by: Stan Bonev (sb5356) <sb5356@att.com>
Change-Id: I7e107c1b1c15dc0336c604b102b11293ee4b8920
(cherry picked from commit eb36deb15c4882ec373e972eab40fcb947b5f002)

adaptors/resource-assignment/provider/src/main/java/org/onap/ccsdk/sli/adaptors/ra/ResourceAllocator.java
adaptors/resource-assignment/provider/src/main/java/org/onap/ccsdk/sli/adaptors/ra/alloc/DbAllocationRule.java
adaptors/resource-assignment/provider/src/main/java/org/onap/ccsdk/sli/adaptors/ra/comp/ResourceRequest.java
adaptors/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestReserve.java

index 10f3e02..d414659 100644 (file)
@@ -457,6 +457,10 @@ public class ResourceAllocator implements SvcLogicResource {
         rr.rangeForceNewNumbers = Boolean.parseBoolean(rangeForceNewNumbersStr);
         String rangeNextInSequenceStr = getParam(ctx, "range-next-in-sequence", false, "false");
         rr.rangeNextInSequence = Boolean.parseBoolean(rangeNextInSequenceStr);
+        String rangeRequestedCountStr = getParam(ctx, "range-requested-count", false, "1");
+        rr.rangeRequestedCount = Integer.parseInt(rangeRequestedCountStr);
+        String rangeSequentialStr = getParam(ctx, "range-sequential", false, "false");
+        rr.rangeSequential = Boolean.parseBoolean(rangeSequentialStr);
         String replaceStr = getParam(ctx, "replace", false, "true");
         rr.replace = Boolean.parseBoolean(replaceStr);
         rr.applicationId = getParam(ctx, "application-id", false, "SDNC");
index d15b150..3b4ac3b 100644 (file)
@@ -134,8 +134,11 @@ public class DbAllocationRule implements AllocationRule {
         ar.assetId = resourceTarget.resourceTargetType + "::" + resourceTarget.resourceTargetId;
         ar.requestedNumbers = StrUtil.listInt(resourceRequest.rangeRequestedNumbers,
                 "Invalid value for requested-numbers");
-        if (ar.requestedNumbers != null) {
+        if (ar.requestedNumbers != null && !ar.requestedNumbers.isEmpty()) {
             ar.requestedCount = ar.requestedNumbers.size();
+        } else {
+            ar.requestedCount = resourceRequest.rangeRequestedCount;
+            ar.sequential = resourceRequest.rangeSequential;
         }
         ar.excludeNumbers = StrUtil.listInt(resourceRequest.rangeExcludeNumbers, "Invalid value for exclude-numbers");
         ar.reverseOrder = resourceRequest.rangeReverseOrder;
@@ -212,8 +215,11 @@ public class DbAllocationRule implements AllocationRule {
         ar.assetId = resourceTarget.resourceTargetType + "::" + resourceTarget.resourceTargetId;
         ar.requestedNumbers = StrUtil.listInt(resourceRequest.rangeRequestedNumbers,
                 "Invalid value for requested-numbers");
-        if (ar.requestedNumbers != null) {
+        if (ar.requestedNumbers != null && !ar.requestedNumbers.isEmpty()) {
             ar.requestedCount = ar.requestedNumbers.size();
+        } else {
+            ar.requestedCount = resourceRequest.rangeRequestedCount;
+            ar.sequential = resourceRequest.rangeSequential;
         }
         ar.excludeNumbers = StrUtil.listInt(resourceRequest.rangeExcludeNumbers, "Invalid value for exclude-numbers");
         ar.reverseOrder = resourceRequest.rangeReverseOrder;
index 2ebad4c..3b22642 100644 (file)
@@ -36,6 +36,8 @@ public class ResourceRequest {
     public int rangeMaxOverride;
     public boolean rangeForceNewNumbers;
     public boolean rangeNextInSequence;
+    public int rangeRequestedCount;
+    public boolean rangeSequential;
     public boolean replace;
     public String requestType;
     public String serviceModel;
index dbf0c4a..1548791 100644 (file)
@@ -961,4 +961,40 @@ public class TestReserve {
         Assert.assertTrue(st == QueryStatus.SUCCESS);
         Assert.assertTrue(dataSetup.checkRangeItem(resourceName, assetId, "SI::" + entityId + "_test::VPE-Core2::1", "1002"));
     }
+
+    @Test
+    public void test015() throws Exception {
+        String t = "015";
+        log.info("============== reserve " + t + " ================================");
+        log.info("=== Test allocating >1 numbers using range-requested-count parameter");
+
+        String entityId = "reserve" + t;
+        String targetId = "port-id-1";
+        String resourceName = "vlan-id-filter";
+
+        String assetId = "Site::" + targetId;
+
+        dataSetup.cleanup();
+
+        SvcLogicContext ctx = new SvcLogicContext();
+        ctx.setAttribute("ra-input.service-model", "MY-SERV-MODEL");
+        ctx.setAttribute("ra-input.endpoint-position", "VPE-Core2");
+        ctx.setAttribute("ra-input.check-only", "false");
+
+        ctx.setAttribute("ra-input.resource-name", resourceName);
+        ctx.setAttribute("ra-input.range-requested-count", "2");
+        ctx.setAttribute("ra-input.range-sequential", "true");
+
+        ctx.setAttribute("ra-input.reservation-entity-type", "SI");
+        ctx.setAttribute("ra-input.reservation-entity-id", entityId + "_test");
+        ctx.setAttribute("ra-input.reservation-entity-version", "1");
+
+        ctx.setAttribute("ra-input.reservation-target-id", targetId);
+        ctx.setAttribute("ra-input.reservation-target-type", "Site");
+
+        QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx);
+
+        Assert.assertTrue(st == QueryStatus.SUCCESS);
+        Assert.assertTrue(dataSetup.checkRangeItem(resourceName, assetId, "SI::" + entityId + "_test::VPE-Core2::1", "1002,1003"));
+    }
 }