From 4929de231b77eb8c42236af261c6d04b7bb94a3e Mon Sep 17 00:00:00 2001 From: c00149107 Date: Wed, 28 Feb 2018 10:05:41 +0800 Subject: Support query service csar rest Support query service csar rest Change-Id: I236d09dc96e9065b0a9d6db0a4a4024caa11a875 Issue-ID: SO-451 Signed-off-by: c00149107 --- .../adapters/catalogdb/CatalogDbAdapterRest.java | 71 +++++++++++++++++---- .../catalogdb/catalogrest/QueryServiceCsar.java | 72 ++++++++++++++++++++++ 2 files changed, 132 insertions(+), 11 deletions(-) create mode 100644 adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/catalogrest/QueryServiceCsar.java (limited to 'adapters/mso-catalog-db-adapter/src/main/java') diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRest.java b/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRest.java index 668f73816d..8cdeaaa9e1 100644 --- a/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRest.java +++ b/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRest.java @@ -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 + *
+ * + * @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(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 index 0000000000..6b1eb836d9 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/java/org/openecomp/mso/adapters/catalogdb/catalogrest/QueryServiceCsar.java @@ -0,0 +1,72 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.openecomp.mso.adapters.catalogdb.catalogrest; + +import java.util.HashMap; +import java.util.Map; + +import org.openecomp.mso.db.catalog.beans.ToscaCsar; + +/** + * serivce csar query support + *
+ *

+ *

+ * + * @author + * @version ONAP Beijing Release 2018-02-28 + */ +public class QueryServiceCsar extends CatalogQuery{ + + private ToscaCsar toscaCsar; + + public QueryServiceCsar(ToscaCsar toscaCsar){ + this.toscaCsar = toscaCsar; + } + + private final String template = + "\t{\n"+ + "\t\t\"artifactUUID\" : ,\n"+ + "\t\t\"name\" : ,\n"+ + "\t\t\"version\" : ,\n"+ + "\t\t\"artifactChecksum\" : ,\n"+ + "\t\t\"url\" : ,\n"+ + "\t\t\"description\" : \n"+ + "\t}"; + + @Override + public String toString() { + + return toscaCsar.toString(); + } + + @Override + public String JSON2(boolean isArray, boolean isEmbed) { + Map valueMap = new HashMap<>(); + put(valueMap, "ARTIFACT_UUID", null == toscaCsar ? null : toscaCsar.getArtifactUUID()); + put(valueMap, "NAME", null == toscaCsar ? null : toscaCsar.getName()); + put(valueMap, "VERSION", null == toscaCsar ? null : toscaCsar.getVersion()); + put(valueMap, "ARTIFACT_CHECK_SUM", null == toscaCsar ? null : toscaCsar.getArtifactChecksum()); + put(valueMap, "URL", null == toscaCsar ? null : toscaCsar.getUrl()); + put(valueMap, "DESCRIPTION", null == toscaCsar ? null : toscaCsar.getDescription()); + return this.setTemplate(template, valueMap); + } + +} -- cgit 1.2.3-korg