Support query service csar rest 03/33303/1
authorc00149107 <chenchuanyu@huawei.com>
Wed, 28 Feb 2018 02:05:41 +0000 (10:05 +0800)
committerc00149107 <chenchuanyu@huawei.com>
Wed, 28 Feb 2018 02:05:41 +0000 (10:05 +0800)
Support query service csar rest

Change-Id: I236d09dc96e9065b0a9d6db0a4a4024caa11a875
Issue-ID: SO-451
Signed-off-by: c00149107 <chenchuanyu@huawei.com>
adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRest.java
adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/catalogrest/QueryServiceCsar.java [new file with mode: 0644]

index 668f738..8cdeaaa 100644 (file)
@@ -52,34 +52,37 @@ Once the network-level distribution artifacts are defined, similar updates can b
 
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.ws.rs.GET;
 import javax.ws.rs.HEAD;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Response;
 import javax.ws.rs.core.GenericEntity;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
-import org.apache.http.HttpStatus;
+import javax.ws.rs.core.Response;
 
-import org.openecomp.mso.logger.MessageEnum;
-import org.openecomp.mso.logger.MsoLogger;
+import org.apache.http.HttpStatus;
+import org.openecomp.mso.adapters.catalogdb.catalogrest.CatalogQuery;
 import org.openecomp.mso.adapters.catalogdb.catalogrest.CatalogQueryException;
 import org.openecomp.mso.adapters.catalogdb.catalogrest.CatalogQueryExceptionCategory;
-import org.openecomp.mso.adapters.catalogdb.catalogrest.CatalogQuery;
-import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceVnfs;
-import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceNetworks;
-import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceMacroHolder;
 import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryAllottedResourceCustomization;
+import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceCsar;
+import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceMacroHolder;
+import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceNetworks;
+import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryServiceVnfs;
 import org.openecomp.mso.adapters.catalogdb.catalogrest.QueryVfModule;
 import org.openecomp.mso.db.catalog.CatalogDatabase;
-import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
-import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
+import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
 import org.openecomp.mso.db.catalog.beans.ServiceMacroHolder;
-import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
+import org.openecomp.mso.db.catalog.beans.ToscaCsar;
+import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
+import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
+import org.openecomp.mso.logger.MessageEnum;
+import org.openecomp.mso.logger.MsoLogger;
 
 /**
  * This class services calls to the REST interface for VF Modules (http://host:port/ecomp/mso/catalog/v1)
@@ -466,4 +469,50 @@ public class CatalogDbAdapterRest {
                }
        }
 
+       /**
+        * Get the tosca csar info from catalog
+        * <br>
+        * 
+        * @param smUuid service model uuid
+        * @return the tosca csar information of the serivce.
+        * @since ONAP Beijing Release
+        */
+    @GET
+    @Path("serviceToscaCsar")
+    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+    public Response ServiceToscaCsar(@QueryParam("serviceModelUuid") String smUuid) {
+        int respStatus = HttpStatus.SC_OK;
+        CatalogDatabase db = CatalogDatabase.getInstance();
+        String entity = "";
+        try{
+            if(smUuid != null && !"".equals(smUuid)){
+                LOGGER.debug ("Query Csar by service model uuid: " + smUuid);
+                ToscaCsar toscaCsar = db.getToscaCsarByServiceModelUUID(smUuid);
+                if(toscaCsar != null){
+                    QueryServiceCsar serviceCsar = new QueryServiceCsar(toscaCsar);
+                    entity = serviceCsar.JSON2(false, false);
+                }
+                else{
+                    respStatus = HttpStatus.SC_NOT_FOUND;
+                }
+            }else{
+                throw(new Exception("Incoming parameter is null or blank"));
+            }           
+            LOGGER.debug ("Query Csar exit");
+            return Response
+                    .status(respStatus)
+                    .entity(entity) 
+                    .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                    .build();
+        }catch(Exception e){
+            LOGGER.error (MessageEnum.RA_QUERY_VNF_ERR,  smUuid, "", "ServiceToscaCsar", MsoLogger.ErrorCode.BusinessProcesssError, "Exception during query csar by service model uuid: ", e);
+            CatalogQueryException excResp = new CatalogQueryException(e.getMessage(), CatalogQueryExceptionCategory.INTERNAL, Boolean.FALSE, null);
+            return Response
+                    .status(HttpStatus.SC_INTERNAL_SERVER_ERROR)
+                    .entity(new GenericEntity<CatalogQueryException>(excResp) {})
+                    .build();
+        }finally {
+            db.close();
+        }
+    }
 }
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/catalogrest/QueryServiceCsar.java b/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/catalogrest/QueryServiceCsar.java
new file mode 100644 (file)
index 0000000..6b1eb83
--- /dev/null
@@ -0,0 +1,72 @@
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP - SO\r
+ * ================================================================================\r
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+package org.openecomp.mso.adapters.catalogdb.catalogrest;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.openecomp.mso.db.catalog.beans.ToscaCsar;\r
+\r
+/**\r
+ * serivce csar query support \r
+ * <br>\r
+ * <p>\r
+ * </p>\r
+ * \r
+ * @author\r
+ * @version     ONAP Beijing Release  2018-02-28\r
+ */\r
+public class QueryServiceCsar extends CatalogQuery{\r
+    \r
+    private ToscaCsar toscaCsar;\r
+    \r
+    public QueryServiceCsar(ToscaCsar toscaCsar){\r
+        this.toscaCsar = toscaCsar;\r
+    }\r
+    \r
+    private final String template =\r
+            "\t{\n"+\r
+            "\t\t\"artifactUUID\"         : <ARTIFACT_UUID>,\n"+\r
+            "\t\t\"name\"                 : <NAME>,\n"+\r
+            "\t\t\"version\"              : <VERSION>,\n"+\r
+            "\t\t\"artifactChecksum\"     : <ARTIFACT_CHECK_SUM>,\n"+\r
+            "\t\t\"url\"                  : <URL>,\n"+\r
+            "\t\t\"description\"          : <DESCRIPTION>\n"+\r
+            "\t}";\r
+    \r
+    @Override\r
+    public String toString() {\r
+\r
+        return toscaCsar.toString();\r
+    }\r
+\r
+    @Override\r
+    public String JSON2(boolean isArray, boolean isEmbed) {\r
+        Map<String, String> valueMap = new HashMap<>();\r
+        put(valueMap, "ARTIFACT_UUID", null == toscaCsar ? null : toscaCsar.getArtifactUUID());\r
+        put(valueMap, "NAME", null == toscaCsar ? null : toscaCsar.getName());\r
+        put(valueMap, "VERSION", null == toscaCsar ? null : toscaCsar.getVersion());\r
+        put(valueMap, "ARTIFACT_CHECK_SUM", null == toscaCsar ? null : toscaCsar.getArtifactChecksum());\r
+        put(valueMap, "URL", null == toscaCsar ? null : toscaCsar.getUrl());\r
+        put(valueMap, "DESCRIPTION", null == toscaCsar ? null : toscaCsar.getDescription());\r
+        return this.setTemplate(template, valueMap);\r
+    }\r
+\r
+}\r