Add dcae structure 31/99331/2
authorsebdet <sebastien.determe@intl.att.com>
Mon, 9 Dec 2019 11:58:20 +0000 (12:58 +0100)
committersebdet <sebastien.determe@intl.att.com>
Mon, 9 Dec 2019 13:18:15 +0000 (14:18 +0100)
Add the DCAE structure to handle the sorting of the loops defined in the
DCAE inventory.

Issue-ID: CLAMP-575
Change-Id: I52cffd1d1812f5d3e5802e46d6c5147dafb4a7f5
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponse.java
src/main/resources/boot-message.txt
src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseTest.java [new file with mode: 0644]

diff --git a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java
new file mode 100644 (file)
index 0000000..b383c18
--- /dev/null
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.clds.model.dcae;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * This class stores the multiple DcaeInventoryResponse coming back from DCAE.
+ * The structure is a map of list indexed by asdcServiceId. The list is sorted
+ * by asdcResourceId. Therefore it's possible to retrieve all the loops defined
+ * in the DCAE inventory and created by DCAE Mod.
+ */
+public class DcaeInventoryCache {
+
+    private Map<String, Set<DcaeInventoryResponse>> blueprintsMap = new ConcurrentHashMap<>();
+
+    public void addDcaeInventoryResponse(DcaeInventoryResponse inventoryResponse) {
+        Set<DcaeInventoryResponse> responsesSet = blueprintsMap.get(inventoryResponse.getAsdcServiceId());
+        if (responsesSet == null) {
+            responsesSet = new TreeSet<DcaeInventoryResponse>();
+            blueprintsMap.put(inventoryResponse.getAsdcServiceId(), responsesSet);
+        }
+        responsesSet.add(inventoryResponse);
+    }
+
+    public Set<String> getAllLoopIds() {
+        return this.blueprintsMap.keySet();
+    }
+
+    public Set<DcaeInventoryResponse> getAllBlueprintsPerLoopId(String loopId) {
+        return blueprintsMap.getOrDefault(loopId, new TreeSet<>());
+    }
+}
index 9724506..bdf6e70 100644 (file)
@@ -3,7 +3,7 @@
  * ============LICENSE_START=======================================================
  * ONAP CLAMP
  * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,7 +29,7 @@ import com.google.gson.annotations.Expose;
 /**
  * This class maps the DCAE inventory answer to a nice pojo.
  */
-public class DcaeInventoryResponse {
+public class DcaeInventoryResponse implements Comparable<DcaeInventoryResponse> {
 
     @Expose
     private String typeName;
@@ -37,6 +37,25 @@ public class DcaeInventoryResponse {
     @Expose
     private String typeId;
 
+    @Expose
+    private String blueprintTemplate;
+
+    /**
+     * This field will be used to know all blueprints associated a loop.
+     */
+    @Expose
+    private String asdcServiceId;
+
+    /**
+     * This field will be used to know to order of each blueprint microservice in a
+     * loop.
+     */
+    @Expose
+    private String asdcResourceId;
+
+    @Expose
+    private String selfLink;
+
     public String getTypeName() {
         return typeName;
     }
@@ -52,4 +71,43 @@ public class DcaeInventoryResponse {
     public void setTypeId(String typeId) {
         this.typeId = typeId;
     }
+
+    public String getBlueprintTemplate() {
+        return blueprintTemplate;
+    }
+
+    public void setBlueprintTemplate(String blueprintTemplate) {
+        this.blueprintTemplate = blueprintTemplate;
+    }
+
+    public String getAsdcServiceId() {
+        return asdcServiceId;
+    }
+
+    public void setAsdcServiceId(String asdcServiceId) {
+        this.asdcServiceId = asdcServiceId;
+    }
+
+    public String getAsdcResourceId() {
+        return asdcResourceId;
+    }
+
+    public void setAsdcResourceId(String asdcResourceId) {
+        this.asdcResourceId = asdcResourceId;
+    }
+
+    public String getSelfLink() {
+        return selfLink;
+    }
+
+    public void setSelfLink(String selfLink) {
+        this.selfLink = selfLink;
+    }
+
+    @Override
+    public int compareTo(DcaeInventoryResponse otherResponse) {
+        int thisResourceId = Integer.parseInt(this.asdcResourceId);
+        int otherResourceId = Integer.parseInt(otherResponse.getAsdcResourceId());
+        return (thisResourceId < otherResourceId ? -1 : (thisResourceId > otherResourceId ? 1 : 0));
+    }
 }
index 46b0a6f..a1c646f 100644 (file)
@@ -1,15 +1,16 @@
-     
-         
-       ▐ ▄  ▄▄▄·  ▄▄▄·    ▄▄▄ .▄▄▌       ▄▄▄· ▄▄▌ ▄▄▄▄▄      
-▪     •█▌▐█▐█ ▀█ ▐█ ▄█    ▀▄.▀·██•      ▐█ ▀█ ██• •██  ▪     
- ▄█▀▄ ▐█▐▐▌▄█▀▀█  ██▀·    ▐▀▀▪▄██▪      ▄█▀▀█ ██▪  ▐█.▪ ▄█▀▄ 
-▐█▌.▐▌██▐█▌▐█ ▪▐▌▐█▪·•    ▐█▄▄▌▐█▌▐▌    ▐█ ▪▐▌▐█▌▐▌▐█▌·▐█▌.▐▌
- ▀█▄▀▪▀▀ █▪ ▀  ▀ .▀        ▀▀▀ .▀▀▀      ▀  ▀ .▀▀▀ ▀▀▀  ▀█▄▀▪
-                ▄▄· ▄▄▌   ▄▄▄· • ▌ ▄ ·.  ▄▄▄·                               
-               ▐█ ▌▪██•  ▐█ ▀█ ·██ ▐███▪▐█ ▄█                               
-               ██ ▄▄██▪  ▄█▀▀█ ▐█ ▌▐▌▐█· ██▀·                               
-               ▐███▌▐█▌▐▌▐█ ▪▐▌██ ██▌▐█▌▐█▪·•                               
-               ·▀▀▀ .▀▀▀  ▀  ▀ ▀▀  █▪▀▀▀.▀      
 
-
-   :: Starting ::     
\ No newline at end of file
+  ___   ____    ____  ____       _____  ____    ____  ____   __  _  _____  __ __  ____  ______    
+ /   \ |    \  /    T|    \     |     ||    \  /    T|    \ |  l/ ]|     ||  T  T|    \|      T   
+Y     Y|  _  YY  o  ||  o  )    |   __j|  D  )Y  o  ||  _  Y|  ' / |   __j|  |  ||  D  )      |   
+|  O  ||  |  ||     ||   _/     |  l_  |    / |     ||  |  ||    \ |  l_  |  |  ||    /l_j  l_j   
+|     ||  |  ||  _  ||  |       |   _] |    \ |  _  ||  |  ||     Y|   _] |  :  ||    \  |  |     
+l     !|  |  ||  |  ||  |       |  T   |  .  Y|  |  ||  |  ||  .  ||  T   l     ||  .  Y |  |     
+ \___/ l__j__jl__j__jl__j       l__j   l__j\_jl__j__jl__j__jl__j\_jl__j    \__,_jl__j\_j l__j     
+                                 __  _       ____  ___ ___  ____  
+                                /  ]| T     /    T|   T   T|    \ 
+                               /  / | |    Y  o  || _   _ ||  o  )
+                              /  /  | l___ |     ||  \_/  ||   _/ 
+                             /   \_ |     T|  _  ||   |   ||  |   
+                             \     ||     ||  |  ||   |   ||  |   
+                              \____jl_____jl__j__jl___j___jl__j   
+   :: Starting ::                    
\ No newline at end of file
diff --git a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java
new file mode 100644 (file)
index 0000000..70d1b4a
--- /dev/null
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.clds.model.dcae;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DcaeInventoryResponseCacheTest {
+
+    public static DcaeInventoryCache inventoryCache = new DcaeInventoryCache();
+
+    @BeforeClass
+    public static void createExample() {
+        DcaeInventoryResponse response1 = new DcaeInventoryResponse();
+        response1.setAsdcServiceId("id1");
+        response1.setAsdcResourceId("0");
+        DcaeInventoryResponse response2 = new DcaeInventoryResponse();
+        response2.setAsdcServiceId("id1");
+        response2.setAsdcResourceId("1");
+        DcaeInventoryResponse response3 = new DcaeInventoryResponse();
+        response3.setAsdcServiceId("id1");
+        response3.setAsdcResourceId("2");
+        DcaeInventoryResponse response4 = new DcaeInventoryResponse();
+        response4.setAsdcServiceId("id2");
+        response4.setAsdcResourceId("0");
+        DcaeInventoryResponse response5 = new DcaeInventoryResponse();
+        response5.setAsdcServiceId("id2");
+        response5.setAsdcResourceId("1");
+
+        inventoryCache.addDcaeInventoryResponse(response1);
+        inventoryCache.addDcaeInventoryResponse(response3);
+        inventoryCache.addDcaeInventoryResponse(response2);
+        inventoryCache.addDcaeInventoryResponse(response4);
+        inventoryCache.addDcaeInventoryResponse(response5);
+    }
+
+    @Test
+    public void testGetAllLoopIds() {
+        assertThat(inventoryCache.getAllLoopIds().size()).isEqualTo(2);
+    }
+
+    @Test
+    public void testGetAllBlueprintsPerLoopId() {
+        int value = 0;
+        for (DcaeInventoryResponse inventoryResponse : inventoryCache.getAllBlueprintsPerLoopId("id1")) {
+            assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId())).isEqualTo(value++);
+        }
+
+        value = 0;
+        for (DcaeInventoryResponse inventoryResponse : inventoryCache.getAllBlueprintsPerLoopId("id2")) {
+            assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId())).isEqualTo(value++);
+        }
+    }
+
+}
diff --git a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseTest.java b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseTest.java
new file mode 100644 (file)
index 0000000..fc4872c
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.clds.model.dcae;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.TreeSet;
+
+import org.junit.Test;
+
+public class DcaeInventoryResponseTest {
+
+    @Test
+    public void testComparator() {
+        DcaeInventoryResponse response1 = new DcaeInventoryResponse();
+        response1.setAsdcServiceId("id1");
+        response1.setAsdcResourceId("0");
+        DcaeInventoryResponse response2 = new DcaeInventoryResponse();
+        response2.setAsdcServiceId("id2");
+        response2.setAsdcResourceId("1");
+        DcaeInventoryResponse response3 = new DcaeInventoryResponse();
+        response3.setAsdcServiceId("id3");
+        response3.setAsdcResourceId("2");
+        DcaeInventoryResponse response4 = new DcaeInventoryResponse();
+        response4.setAsdcServiceId("id4");
+        response4.setAsdcResourceId("3");
+
+        TreeSet<DcaeInventoryResponse> responseSet = new TreeSet<>();
+        responseSet.add(response4);
+        responseSet.add(response3);
+        responseSet.add(response1);
+        responseSet.add(response2);
+
+        int value = 0;
+        for (DcaeInventoryResponse inventoryResponse : responseSet) {
+            assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId()) == value++).isTrue();
+        }
+    }
+}