Merge "fixed sonar issue in GenericRequest.java"
[ccsdk/sli/adaptors.git] / resource-assignment / provider / src / main / java / org / onap / ccsdk / sli / adaptors / ra / comp / EndPointAllocatorImpl.java
index 952ceb6..d188429 100644 (file)
@@ -39,6 +39,7 @@ import org.onap.ccsdk.sli.adaptors.rm.data.MultiResourceAllocationOutcome;
 import org.onap.ccsdk.sli.adaptors.rm.data.RangeAllocationItem;
 import org.onap.ccsdk.sli.adaptors.rm.data.RangeAllocationOutcome;
 import org.onap.ccsdk.sli.adaptors.rm.data.RangeResource;
+import org.onap.ccsdk.sli.adaptors.rm.data.ReleaseRequest;
 import org.onap.ccsdk.sli.adaptors.rm.data.Resource;
 import org.onap.ccsdk.sli.adaptors.util.str.StrUtil;
 import org.slf4j.Logger;
@@ -47,7 +48,7 @@ import org.slf4j.LoggerFactory;
 public class EndPointAllocatorImpl implements EndPointAllocator {
 
     private static final Logger log = LoggerFactory.getLogger(EndPointAllocatorImpl.class);
-    
+
     private ResourceManager resourceManager;
 
     private Map<String, List<AllocationRule>> allocationRuleMap;
@@ -83,7 +84,7 @@ public class EndPointAllocatorImpl implements EndPointAllocator {
                 if (!allgood) {
                     String resourceSetId = resourceEntity.resourceEntityType + "::" + resourceEntity.resourceEntityId
                             + "::" + resourceEntity.resourceEntityVersion;
-                    resourceManager.releaseResourceSet(resourceSetId);
+                    resourceManager.releaseResources(ReleaseRequest.resourceSet(resourceSetId));
                 }
             }
         }
@@ -204,10 +205,86 @@ public class EndPointAllocatorImpl implements EndPointAllocator {
     }
 
     @Override
-    public ResourceData getResource(String resourceTargetType, String resourceTargetId, String resourceName) {
-        ResourceData rd = new ResourceData();;
+    public List<ResourceData> getResourcesForTarget(String resourceTargetTypeFilter, String resourceTargetIdFilter,
+            String resourceName) {
+        List<ResourceData> rdlist = new ArrayList<>();
+
+        String assetIdFilter = null;
+        if (resourceTargetTypeFilter != null && resourceTargetIdFilter != null) {
+            assetIdFilter = resourceTargetTypeFilter + "::" + resourceTargetIdFilter;
+        } else if (resourceTargetTypeFilter != null) {
+            assetIdFilter = resourceTargetTypeFilter;
+        } else if (resourceTargetIdFilter != null) {
+            assetIdFilter = resourceTargetIdFilter;
+        }
+
+        List<Resource> rlist = resourceManager.queryResources(resourceName, assetIdFilter);
+
+        for (Resource r : rlist) {
+
+            log.info("ResourceName:" + r.resourceKey.resourceName + " assetId:" + r.resourceKey.assetId);
+
+            ResourceData rd = new ResourceData();
+            rdlist.add(rd);
+
+            rd.resourceName = r.resourceKey.resourceName;
+            int i1 = r.resourceKey.assetId.indexOf("::");
+            if (i1 > 0) {
+                rd.resourceTargetType = r.resourceKey.assetId.substring(0, i1);
+                rd.resourceTargetId = r.resourceKey.assetId.substring(i1 + 2);
+
+                int i2 = r.resourceKey.assetId.lastIndexOf("::");
+                if (i2 > i1) {
+                    rd.resourceTargetValue = r.resourceKey.assetId.substring(i2 + 2);
+                }
+            } else {
+                rd.resourceTargetType = "";
+                rd.resourceTargetId = r.resourceKey.assetId;
+            }
+
+            rd.data = new HashMap<>();
+
+            if (r instanceof RangeResource) {
+                RangeResource rr = (RangeResource) r;
+
+                log.info("rr.used: " + rr.used);
+                String ss = String.valueOf(rr.used);
+                ss = ss.substring(1, ss.length() - 1);
+                rd.data.put("allocated", ss);
+
+            } else if (r instanceof LimitResource) {
+                LimitResource lr = (LimitResource) r;
+
+                log.info("lr.used: " + lr.used);
+                rd.data.put("allocated", String.valueOf(lr.used));
+            }
+        }
+
+        return rdlist;
+    }
+
+    @Override
+    public ResourceData getResource(String resourceTargetType, String resourceTargetId, String resourceName,
+            String resourceEntityTypeFilter, String resourceEntityIdFilter, String resourceShareGroupFilter) {
+        ResourceData rd = new ResourceData();
         String assetId = resourceTargetType + "::" + resourceTargetId;
-        Resource r = resourceManager.getResource(resourceName, assetId);
+
+        String resourceUnionFilter = null;
+        if (resourceEntityTypeFilter != null && resourceEntityIdFilter != null) {
+            resourceUnionFilter = resourceEntityTypeFilter + "::" + resourceEntityIdFilter;
+        } else if (resourceEntityTypeFilter != null) {
+            resourceUnionFilter = resourceEntityTypeFilter;
+        } else if (resourceEntityIdFilter != null) {
+            resourceUnionFilter = resourceEntityIdFilter;
+        }
+
+        Resource r = null;
+        if (resourceUnionFilter != null || resourceShareGroupFilter != null) {
+            r = resourceManager.queryResource(resourceName, assetId, resourceUnionFilter, resourceShareGroupFilter);
+        } else {
+            r = resourceManager.getResource(resourceName, assetId);
+        }
+
         if (r != null) {
             log.info("ResourceName:" + r.resourceKey.resourceName + " assetId:" + r.resourceKey.assetId);