aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeigh, Phillip (pl876u) <phillip.leigh@amdocs.com>2019-03-12 15:49:49 -0400
committerLeigh, Phillip (pl876u) <phillip.leigh@amdocs.com>2019-03-13 16:01:07 -0400
commita6e5540e815fcb1897e9e2dd4dcbd7ff0cf3b067 (patch)
tree09bf7e6a3f49c9dd2555502ed5e4c3aa39e9c5e4
parentd7b7398f1527be74dd279c66395c8518ac8d4e22 (diff)
SdcCtxBulder:set UUID svcInstanceId & versioning
Also fixed the versioning support Issue-ID: LOG-712 Issue-ID: LOG-658 Change-Id: Iaf3327d2c891671bae45f3f2c5a7fc5b6e9cf180 Signed-off-by: Leigh, Phillip (pl876u) <phillip.leigh@amdocs.com>
-rw-r--r--src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaCsarArtifactHandler.java371
-rw-r--r--src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaModelConverter.java278
-rw-r--r--src/main/java/org/onap/pomba/contextbuilder/sdc/service/SpringServiceImpl.java120
-rw-r--r--src/main/java/org/onap/pomba/contextbuilder/sdc/service/rs/RestService.java118
-rw-r--r--src/test/java/org/onap/pomba/contextbuilder/sdc/model/test/ArtifactInfoTest.java119
-rw-r--r--src/test/java/org/onap/pomba/contextbuilder/sdc/test/SDCClientConfigurationTest.java108
-rw-r--r--src/test/java/org/onap/pomba/contextbuilder/sdc/test/ToscaBuildConfigTest.java116
-rw-r--r--src/test/java/org/onap/pomba/contextbuilder/sdc/unittest/service/SDCContextBuilderTest.java392
8 files changed, 815 insertions, 807 deletions
diff --git a/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaCsarArtifactHandler.java b/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaCsarArtifactHandler.java
index 9fac21e..dceb4ef 100644
--- a/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaCsarArtifactHandler.java
+++ b/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaCsarArtifactHandler.java
@@ -1,186 +1,185 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.model.handlers;
-
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.Map;
-import org.onap.pomba.contextbuilder.sdc.ToscaBuilderConfig;
-import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
-import org.onap.pomba.contextbuilder.sdc.model.ArtifactInfo;
-import org.onap.pomba.contextbuilder.sdc.model.SDCContextResponse;
-import org.onap.sdc.api.results.IDistributionClientDownloadResult;
-import org.onap.sdc.http.SdcConnectorClient;
-import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
-import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
-import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
-import org.onap.sdc.utils.DistributionActionResultEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component("ToscaCsarArtifactHandler")
-public class ToscaCsarArtifactHandler {
-
- private static final String DEFAULT_CSAR_FILE_EXTENSION = ".zip";
-
- private static Logger log = LoggerFactory.getLogger(ToscaCsarArtifactHandler.class);
-
- private Map<String, ISdcCsarHelper> sdcCsarHelpers = new HashMap<>();
-
- @Autowired
- private SdcConnectorClient client;
- @Autowired
- private ToscaBuilderConfig config;
-
-
- /**
- * Retrieves a subset of the TOSCA model for the given version ID.
- * If the model is not cached, a request to download the CSAR file is sent to SDC.
- * @param modelVersionId
- * @return Response containing a subset of the model data
- * @throws ToscaCsarException
- */
- public SDCContextResponse getToscaModel(String modelVersionId) throws ToscaCsarException {
-
- ISdcCsarHelper helper = sdcCsarHelpers.get(modelVersionId);
- if(helper == null) {
- log.debug("No CSAR file cached for " + modelVersionId);
- helper = retrieveToscaCsarArtifact(modelVersionId);
- if(helper != null) {
- sdcCsarHelpers.put(modelVersionId, helper);
- }
- }
-
- SDCContextResponse response = new SDCContextResponse();
-
- if(helper == null) {
- log.debug("CSAR artifact not found for model-version-id: " + modelVersionId);
- response.setModelData("");
- return response;
- }
-
- Gson gson = new GsonBuilder().create();
- String modelData = gson.toJson(ToscaModelConverter.convert(helper));
- response.setModelData(modelData);
- return response;
- }
-
-
- /**
- * Retrieves the CSAR file from SDC for the given model version ID
- * @param modelVersionId
- * @return Returns NULL if CSAR file couldn't be retrieved
- * @throws ToscaCsarException
- */
- private ISdcCsarHelper retrieveToscaCsarArtifact(String modelVersionId) throws ToscaCsarException {
-
- if (config.getTestToscaCsarFile() != null && !config.getTestToscaCsarFile().isEmpty()) {
- return getSdcToscaContext(config.getTestToscaCsarFile());
- }
-
- String url = generateURL(modelVersionId);
- log.debug("Downloading CSAR using URL suffix: " + url);
-
- ArtifactInfo artifact = new ArtifactInfo();
- artifact.setArtifactType(config.getArtifactType());
- artifact.setArtifactURL(url);
- artifact.setArtifactChecksum("value_not_used_by_sdc_distribution_client_lib");
-
- String csarFile = generateTemporaryFile(modelVersionId);
- try (OutputStream outputStream = Files.newOutputStream(Paths.get(csarFile), StandardOpenOption.CREATE);) {
- IDistributionClientDownloadResult downloadResult = client.dowloadArtifact(artifact);
- if (downloadResult.getDistributionActionResult() == DistributionActionResultEnum.ARTIFACT_NOT_FOUND) {
- log.debug("Failed to retrieve CSAR artifact from SDC: " + downloadResult.getDistributionMessageResult());
- return null;
- } else if (downloadResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
- throw new ToscaCsarException("Failed to retrieve CSAR artifact from SDC: " + downloadResult.getDistributionMessageResult());
- }
-
- byte[] payload = downloadResult.getArtifactPayload();
- if ((payload == null) || (payload.length == 0)) {
- log.debug("Retrieved CSAR payload is empty");
- return null;
- }
- outputStream.write(payload);
- } catch (IOException e){
- throw new ToscaCsarException("Failed to write temporary CSAR file '" + csarFile + "'", e);
- }
-
- ISdcCsarHelper helper = getSdcToscaContext(csarFile);
- try {
- Files.delete(Paths.get(csarFile));
- } catch (IOException e) {
- log.error("Failed to delete temporary CSAR file '" + csarFile + "': " + e.getMessage());
- }
- return helper;
- }
-
-
- private String generateURL(String uuid) {
- return MessageFormat.format(config.getUrlTemplate(), uuid);
- }
-
-
- /**
- * Creates a temporary file for downloaded CSAR file
- * @param uuid
- * @return
- * @throws ToscaCsarException
- */
- private String generateTemporaryFile(String uuid) throws ToscaCsarException {
- try {
- String fullPrefix = config.getCsarFilePrefix() + uuid + "-";
- String suffix = (config.getCsarFileSuffix() == null ? DEFAULT_CSAR_FILE_EXTENSION : config.getCsarFileSuffix());
- Path downloadFile = Files.createTempFile(fullPrefix, suffix);
- log.debug("Temporary CSAR file name: " + downloadFile.toString());
- return downloadFile.toString();
- } catch (IOException e) {
- throw new ToscaCsarException("Failed to create temporary CSAR file: " + e.getMessage());
- }
- }
-
-
- /**
- * Parses a CSAR file
- * @param csarFile
- * @return
- * @throws ToscaCsarException
- */
- private ISdcCsarHelper getSdcToscaContext(String csarFile) throws ToscaCsarException {
-
- log.info("Loading and parsing SDC csar file ...");
- try {
- SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
- return factory.getSdcCsarHelper(csarFile);
- } catch (SdcToscaParserException e) {
- throw new ToscaCsarException("Failed to parse CSAR file", e);
- }
- }
-
-}
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.model.handlers;
+
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
+import org.onap.pomba.contextbuilder.sdc.ToscaBuilderConfig;
+import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
+import org.onap.pomba.contextbuilder.sdc.model.ArtifactInfo;
+import org.onap.pomba.contextbuilder.sdc.model.SDCContextResponse;
+import org.onap.sdc.api.results.IDistributionClientDownloadResult;
+import org.onap.sdc.http.SdcConnectorClient;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
+import org.onap.sdc.utils.DistributionActionResultEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component("ToscaCsarArtifactHandler")
+public class ToscaCsarArtifactHandler {
+
+ private static final String DEFAULT_CSAR_FILE_EXTENSION = ".zip";
+
+ private static Logger log = LoggerFactory.getLogger(ToscaCsarArtifactHandler.class);
+
+ private Map<String, ISdcCsarHelper> sdcCsarHelpers = new HashMap<>();
+
+ @Autowired
+ private SdcConnectorClient client;
+ @Autowired
+ private ToscaBuilderConfig config;
+
+
+ /**
+ * Retrieves a subset of the TOSCA model for the given version ID.
+ * If the model is not cached, a request to download the CSAR file is sent to SDC.
+ * @param modelVersionId
+ * @return Response containing a subset of the model data
+ * @throws ToscaCsarException
+ */
+ public SDCContextResponse getToscaModel(String modelVersionId, String serviceInstanceId) throws ToscaCsarException {
+
+ ISdcCsarHelper helper = sdcCsarHelpers.get(modelVersionId);
+ if(helper == null) {
+ log.debug("No CSAR file cached for " + modelVersionId);
+ helper = retrieveToscaCsarArtifact(modelVersionId);
+ if(helper != null) {
+ sdcCsarHelpers.put(modelVersionId, helper);
+ }
+ }
+
+ SDCContextResponse response = new SDCContextResponse();
+
+ if(helper == null) {
+ log.debug("CSAR artifact not found for model-version-id: " + modelVersionId);
+ response.setModelData("");
+ return response;
+ }
+
+ Gson gson = new GsonBuilder().create();
+ String modelData = gson.toJson(ToscaModelConverter.convert(helper, modelVersionId, serviceInstanceId));
+ response.setModelData(modelData);
+ return response;
+ }
+
+
+ /**
+ * Retrieves the CSAR file from SDC for the given model version ID
+ * @param modelVersionId
+ * @return Returns NULL if CSAR file couldn't be retrieved
+ * @throws ToscaCsarException
+ */
+ private ISdcCsarHelper retrieveToscaCsarArtifact(String modelVersionId) throws ToscaCsarException {
+
+ if (config.getTestToscaCsarFile() != null && !config.getTestToscaCsarFile().isEmpty()) {
+ return getSdcToscaContext(config.getTestToscaCsarFile());
+ }
+ String url = generateURL(modelVersionId);
+ log.debug("Downloading CSAR using URL suffix: " + url);
+
+ ArtifactInfo artifact = new ArtifactInfo();
+ artifact.setArtifactType(config.getArtifactType());
+ artifact.setArtifactURL(url);
+ artifact.setArtifactChecksum("value_not_used_by_sdc_distribution_client_lib");
+
+ String csarFile = generateTemporaryFile(modelVersionId);
+ try (OutputStream outputStream = Files.newOutputStream(Paths.get(csarFile), StandardOpenOption.CREATE);) {
+ IDistributionClientDownloadResult downloadResult = client.dowloadArtifact(artifact);
+ if (downloadResult.getDistributionActionResult() == DistributionActionResultEnum.ARTIFACT_NOT_FOUND) {
+ log.debug("Failed to retrieve CSAR artifact from SDC: " + downloadResult.getDistributionMessageResult());
+ return null;
+ } else if (downloadResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ throw new ToscaCsarException("Failed to retrieve CSAR artifact from SDC: " + downloadResult.getDistributionMessageResult());
+ }
+
+ byte[] payload = downloadResult.getArtifactPayload();
+ if ((payload == null) || (payload.length == 0)) {
+ log.debug("Retrieved CSAR payload is empty");
+ return null;
+ }
+ outputStream.write(payload);
+ } catch (IOException e){
+ throw new ToscaCsarException("Failed to write temporary CSAR file '" + csarFile + "'", e);
+ }
+
+ ISdcCsarHelper helper = getSdcToscaContext(csarFile);
+ try {
+ Files.delete(Paths.get(csarFile));
+ } catch (IOException e) {
+ log.error("Failed to delete temporary CSAR file '" + csarFile + "': " + e.getMessage());
+ }
+ return helper;
+ }
+
+
+ private String generateURL(String modelVersionId) {
+ return MessageFormat.format(config.getUrlTemplate(), modelVersionId);
+ }
+
+
+ /**
+ * Creates a temporary file for downloaded CSAR file
+ * @param modelVersionId
+ * @return
+ * @throws ToscaCsarException
+ */
+ private String generateTemporaryFile(String modelVersionId) throws ToscaCsarException {
+ try {
+ String fullPrefix = config.getCsarFilePrefix() + modelVersionId + "-";
+ String suffix = (config.getCsarFileSuffix() == null ? DEFAULT_CSAR_FILE_EXTENSION : config.getCsarFileSuffix());
+ Path downloadFile = Files.createTempFile(fullPrefix, suffix);
+ log.debug("Temporary CSAR file name: " + downloadFile.toString());
+ return downloadFile.toString();
+ } catch (IOException e) {
+ throw new ToscaCsarException("Failed to create temporary CSAR file: " + e.getMessage());
+ }
+ }
+
+
+ /**
+ * Parses a CSAR file
+ * @param csarFile
+ * @return
+ * @throws ToscaCsarException
+ */
+ private ISdcCsarHelper getSdcToscaContext(String csarFile) throws ToscaCsarException {
+
+ log.info("Loading and parsing SDC csar file ...");
+ try {
+ SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
+ return factory.getSdcCsarHelper(csarFile);
+ } catch (SdcToscaParserException e) {
+ throw new ToscaCsarException("Failed to parse CSAR file", e);
+ }
+ }
+
+}
diff --git a/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaModelConverter.java b/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaModelConverter.java
index b01e75b..5c565a3 100644
--- a/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaModelConverter.java
+++ b/src/main/java/org/onap/pomba/contextbuilder/sdc/model/handlers/ToscaModelConverter.java
@@ -1,139 +1,139 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.model.handlers;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.onap.pomba.common.datatypes.ModelContext;
-import org.onap.pomba.common.datatypes.Service;
-import org.onap.pomba.common.datatypes.VFModule;
-import org.onap.pomba.common.datatypes.VNF;
-import org.onap.pomba.common.datatypes.VNFC;
-import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
-import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
-import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
-import org.onap.sdc.toscaparser.api.Group;
-import org.onap.sdc.toscaparser.api.NodeTemplate;
-import org.onap.sdc.toscaparser.api.elements.Metadata;
-
-public class ToscaModelConverter {
-
- private ToscaModelConverter() {
-
- }
-
- /**
- * Conversion from SDC model to the common model
- * @param helper
- * @return
- * @throws ToscaCsarException
- */
- public static ModelContext convert(ISdcCsarHelper helper) throws ToscaCsarException {
- ModelContext context = new ModelContext();
- context.setService(generateService(helper.getServiceMetadata()));
- context.setVnfs(generateVnfList(helper));
- return context;
- }
-
- /**
- * Instantiates a service based on the SDC Service metadata
- * @param serviceMetadata
- * @return
- * @throws ToscaCsarException
- */
- private static Service generateService(Metadata serviceMetadata) throws ToscaCsarException {
- Service service = new Service();
- if (serviceMetadata != null) {
- service.setName(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
- service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
- service.setUuid(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
- }
- return service;
- }
-
- /**
- * Generates a list of VFs from the SDC VF-Resources
- * @param helper
- * @return
- * @throws ToscaCsarException
- */
- private static List<VNF> generateVnfList(ISdcCsarHelper helper) throws ToscaCsarException {
-
- List<VNF> vnfList = new ArrayList<>();
- List<NodeTemplate> vfNodeTemplateList = helper.getServiceVfList();
- for (NodeTemplate vfNodeTemplate : vfNodeTemplateList) {
- VNF vnf = new VNF();
- vnf.setName(vfNodeTemplate.getName());
- vnf.setType(vfNodeTemplate.getType());
- vnf.setModelInvariantUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
- vnf.setUuid(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
-
- String customizationUUID = vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
- vnf.setVnfcs(generateVnfcList(helper.getVfcListByVf(customizationUUID)));
- vnf.setVfModules(generateVfModuleList(helper.getVfModulesByVf(customizationUUID)));
-
- vnfList.add(vnf);
- }
- return vnfList;
- }
-
- /**
- * Generates a list of VFNCs from the SDC VF-Resources's VNFCs
- * @param vfcNodeTemplateList
- * @return
- * @throws ToscaCsarException
- */
- private static List<VNFC> generateVnfcList(List<NodeTemplate> vfcNodeTemplateList) throws ToscaCsarException {
- List<VNFC> vnfcList = new ArrayList<>();
- for (NodeTemplate vfcNodeTemplate : vfcNodeTemplateList) {
- VNFC vnfc = new VNFC();
- vnfc.setName(vfcNodeTemplate.getName());
- vnfc.setModelInvariantUUID(vfcNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
- vnfc.setUuid(vfcNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
- vnfcList.add(vnfc);
- }
- return vnfcList;
- }
-
- /**
- * Generates a list of VFModules from the SDC VF-Resource's VF-Modules
- * @param vfModuleGroupList
- * @return
- * @throws ToscaCsarException
- */
- private static List<VFModule> generateVfModuleList(List<Group> vfModuleGroupList) throws ToscaCsarException {
- List<VFModule> vfModuleList = new ArrayList<>();
- for (Group moduleGroup : vfModuleGroupList) {
- VFModule vfModule = new VFModule();
- vfModule.setModelInvariantUUID(moduleGroup.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID));
- vfModule.setUuid(moduleGroup.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID));
-
- Object minInstances = moduleGroup.getPropertyValue(SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);
- if (minInstances != null) {
- vfModule.setMinInstances((Integer)minInstances);
- }
- Object maxInstances = moduleGroup.getPropertyValue(SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);
- if (maxInstances != null) {
- vfModule.setMaxInstances((Integer)maxInstances);
- }
-
- vfModuleList.add(vfModule);
- }
- return vfModuleList;
- }
-}
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.model.handlers;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.onap.pomba.common.datatypes.ModelContext;
+import org.onap.pomba.common.datatypes.Service;
+import org.onap.pomba.common.datatypes.VFModule;
+import org.onap.pomba.common.datatypes.VNF;
+import org.onap.pomba.common.datatypes.VNFC;
+import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
+import org.onap.sdc.toscaparser.api.Group;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
+
+public class ToscaModelConverter {
+
+ private ToscaModelConverter() {
+
+ }
+
+ /**
+ * Conversion from SDC model to the common model
+ * @param helper
+ * @return
+ * @throws ToscaCsarException
+ */
+ public static ModelContext convert(ISdcCsarHelper helper,String modelVersionId, String serviceInstanceId) throws ToscaCsarException {
+ ModelContext context = new ModelContext();
+ context.setService(generateService(helper.getServiceMetadata(), serviceInstanceId));
+ context.setVnfs(generateVnfList(helper));
+ return context;
+ }
+
+ /**
+ * Instantiates a service based on the SDC Service metadata
+ * @param serviceMetadata
+ * @return
+ * @throws ToscaCsarException
+ */
+ private static Service generateService(Metadata serviceMetadata, String serviceInstanceId) throws ToscaCsarException {
+ Service service = new Service();
+ if (serviceMetadata != null) {
+ service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+ service.setModelVersionID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID)); //assign sdc UUID to ModelVersionID based on common model mapping
+ service.setUuid(serviceInstanceId);
+ }
+ return service;
+ }
+
+ /**
+ * Generates a list of VFs from the SDC VF-Resources
+ * @param helper
+ * @return
+ * @throws ToscaCsarException
+ */
+ private static List<VNF> generateVnfList(ISdcCsarHelper helper) throws ToscaCsarException {
+
+ List<VNF> vnfList = new ArrayList<>();
+ List<NodeTemplate> vfNodeTemplateList = helper.getServiceVfList();
+ for (NodeTemplate vfNodeTemplate : vfNodeTemplateList) {
+ VNF vnf = new VNF();
+ vnf.setType(vfNodeTemplate.getType());
+ vnf.setModelInvariantUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+ vnf.setModelVersionID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)); //assign sdc UUID to ModelVersionID based on common model mapping
+
+ String customizationUUID = vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
+ vnf.setVnfcs(generateVnfcList(helper.getVfcListByVf(customizationUUID)));
+ vnf.setVfModules(generateVfModuleList(helper.getVfModulesByVf(customizationUUID)));
+
+ vnfList.add(vnf);
+ }
+ return vnfList;
+ }
+
+ /**
+ * Generates a list of VFNCs from the SDC VF-Resources's VNFCs
+ * @param vfcNodeTemplateList
+ * @return
+ * @throws ToscaCsarException
+ */
+ private static List<VNFC> generateVnfcList(List<NodeTemplate> vfcNodeTemplateList) throws ToscaCsarException {
+ List<VNFC> vnfcList = new ArrayList<>();
+ for (NodeTemplate vfcNodeTemplate : vfcNodeTemplateList) {
+ VNFC vnfc = new VNFC();
+ vnfc.setModelInvariantUUID(vfcNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+ vnfc.setModelVersionID(vfcNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)); //assign sdc UUID to ModelVersionID based on common model mapping
+ vnfcList.add(vnfc);
+ }
+ return vnfcList;
+ }
+
+ /**
+ * Generates a list of VFModules from the SDC VF-Resource's VF-Modules
+ * @param vfModuleGroupList
+ * @return
+ * @throws ToscaCsarException
+ */
+ private static List<VFModule> generateVfModuleList(List<Group> vfModuleGroupList) throws ToscaCsarException {
+ List<VFModule> vfModuleList = new ArrayList<>();
+ for (Group moduleGroup : vfModuleGroupList) {
+ VFModule vfModule = new VFModule();
+ vfModule.setModelInvariantUUID(moduleGroup.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID));
+ vfModule.setModelVersionID(moduleGroup.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID));
+ vfModule.setModelCustomizationUUID(moduleGroup.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULECUSTOMIZATIONUUID));
+
+
+ Object minInstances = moduleGroup.getPropertyValue(SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);
+ if (minInstances != null) {
+ vfModule.setMinInstances((Integer)minInstances);
+ }
+ Object maxInstances = moduleGroup.getPropertyValue(SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);
+ if (maxInstances != null) {
+ vfModule.setMaxInstances((Integer)maxInstances);
+ }
+
+ vfModuleList.add(vfModule);
+ }
+ return vfModuleList;
+ }
+}
diff --git a/src/main/java/org/onap/pomba/contextbuilder/sdc/service/SpringServiceImpl.java b/src/main/java/org/onap/pomba/contextbuilder/sdc/service/SpringServiceImpl.java
index 1ef7fd0..1315fc2 100644
--- a/src/main/java/org/onap/pomba/contextbuilder/sdc/service/SpringServiceImpl.java
+++ b/src/main/java/org/onap/pomba/contextbuilder/sdc/service/SpringServiceImpl.java
@@ -1,61 +1,61 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.service;
-
-import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
-import org.onap.pomba.contextbuilder.sdc.logging.LoggingUtil;
-import org.onap.pomba.contextbuilder.sdc.model.SDCContextRequest;
-import org.onap.pomba.contextbuilder.sdc.model.SDCContextResponse;
-import org.onap.pomba.contextbuilder.sdc.model.handlers.ToscaCsarArtifactHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SpringServiceImpl implements SpringService {
-
- private static Logger log = LoggerFactory.getLogger(SpringService.class);
-
-
- @Autowired
- protected ToscaCsarArtifactHandler toscaCsarArtifactHandler;
-
- @Autowired
- private String httpBasicAuthorization;
-
- @Override
- public SDCContextResponse getModelData(SDCContextRequest ctxRequest) throws ToscaCsarException {
-
- LoggingUtil.initMdc(ctxRequest.getTransactionId(), ctxRequest.getFromAppId(), ctxRequest.getRemoteAddr());
- SDCContextResponse sdcContextResponse = null;
- try {
- ctxRequest.validate(httpBasicAuthorization);
- sdcContextResponse = toscaCsarArtifactHandler.getToscaModel(ctxRequest.getModelVersionId());
- } catch (ToscaCsarException e) {
- log.error(e.getStatus().getStatusCode() + " " + e.getStatus()+ ", Reason: " + e.getMessage());
- sdcContextResponse = new SDCContextResponse(e.getStatus(), e.getMessage());
- } finally {
- LoggingUtil.closeMdc();
- }
- return sdcContextResponse;
-
- }
-
-
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.service;
+
+import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
+import org.onap.pomba.contextbuilder.sdc.logging.LoggingUtil;
+import org.onap.pomba.contextbuilder.sdc.model.SDCContextRequest;
+import org.onap.pomba.contextbuilder.sdc.model.SDCContextResponse;
+import org.onap.pomba.contextbuilder.sdc.model.handlers.ToscaCsarArtifactHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SpringServiceImpl implements SpringService {
+
+ private static Logger log = LoggerFactory.getLogger(SpringService.class);
+
+
+ @Autowired
+ protected ToscaCsarArtifactHandler toscaCsarArtifactHandler;
+
+ @Autowired
+ private String httpBasicAuthorization;
+
+ @Override
+ public SDCContextResponse getModelData(SDCContextRequest ctxRequest) throws ToscaCsarException {
+
+ LoggingUtil.initMdc(ctxRequest.getTransactionId(), ctxRequest.getFromAppId(), ctxRequest.getRemoteAddr());
+ SDCContextResponse sdcContextResponse = null;
+ try {
+ ctxRequest.validate(httpBasicAuthorization);
+ sdcContextResponse = toscaCsarArtifactHandler.getToscaModel(ctxRequest.getModelVersionId(), ctxRequest.getServiceInstanceId());
+ } catch (ToscaCsarException e) {
+ log.error(e.getStatus().getStatusCode() + " " + e.getStatus()+ ", Reason: " + e.getMessage());
+ sdcContextResponse = new SDCContextResponse(e.getStatus(), e.getMessage());
+ } finally {
+ LoggingUtil.closeMdc();
+ }
+ return sdcContextResponse;
+
+ }
+
+
} \ No newline at end of file
diff --git a/src/main/java/org/onap/pomba/contextbuilder/sdc/service/rs/RestService.java b/src/main/java/org/onap/pomba/contextbuilder/sdc/service/rs/RestService.java
index ea0ae0d..91a3569 100644
--- a/src/main/java/org/onap/pomba/contextbuilder/sdc/service/rs/RestService.java
+++ b/src/main/java/org/onap/pomba/contextbuilder/sdc/service/rs/RestService.java
@@ -1,60 +1,60 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.service.rs;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
-
-
-@Api
-@Path("/service")
-@Produces({MediaType.APPLICATION_JSON})
-public interface RestService {
-
-
- @GET
- @Path("/context")
- @Produces({ MediaType.APPLICATION_JSON })
- @ApiOperation(
- value = "Retrieve SDC CSAR file for a give UUID",
- notes = "This method returns SDC CSAR encoded value. ",
- response = Response.class)
- @ApiResponses(value = {
- @ApiResponse(code = 404, message = "Service not available"),
- @ApiResponse(code = 400, message = "Bad request"),
- @ApiResponse(code = 401, message = "Unauthorized"),
- @ApiResponse(code = 500, message = "Unexpected Runtime error") })
- public Response getContext(
- @HeaderParam("Authorization") String authorization,
- @HeaderParam("X-FromAppId") String xFromAppId,
- @HeaderParam("X-TransactionId") String xTransactionId,
- @QueryParam("serviceInstanceId") String serviceInstanceId,
- @QueryParam("modelVersionId") String modelVersionId,
- @QueryParam("modelInvariantId") String modelInvariantId
- ) throws ToscaCsarException;
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.service.rs;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.onap.pomba.contextbuilder.sdc.exception.ToscaCsarException;
+
+
+@Api
+@Path("{version: v2}/service")
+@Produces({MediaType.APPLICATION_JSON})
+public interface RestService {
+
+
+ @GET
+ @Path("/context")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @ApiOperation(
+ value = "Retrieve SDC CSAR file for a give UUID",
+ notes = "This method returns SDC CSAR encoded value. ",
+ response = Response.class)
+ @ApiResponses(value = {
+ @ApiResponse(code = 404, message = "Service not available"),
+ @ApiResponse(code = 400, message = "Bad request"),
+ @ApiResponse(code = 401, message = "Unauthorized"),
+ @ApiResponse(code = 500, message = "Unexpected Runtime error") })
+ public Response getContext(
+ @HeaderParam("Authorization") String authorization,
+ @HeaderParam("X-FromAppId") String xFromAppId,
+ @HeaderParam("X-TransactionId") String xTransactionId,
+ @QueryParam("serviceInstanceId") String serviceInstanceId,
+ @QueryParam("modelVersionId") String modelVersionId,
+ @QueryParam("modelInvariantId") String modelInvariantId
+ ) throws ToscaCsarException;
} \ No newline at end of file
diff --git a/src/test/java/org/onap/pomba/contextbuilder/sdc/model/test/ArtifactInfoTest.java b/src/test/java/org/onap/pomba/contextbuilder/sdc/model/test/ArtifactInfoTest.java
index 5f58fad..d137ac4 100644
--- a/src/test/java/org/onap/pomba/contextbuilder/sdc/model/test/ArtifactInfoTest.java
+++ b/src/test/java/org/onap/pomba/contextbuilder/sdc/model/test/ArtifactInfoTest.java
@@ -1,57 +1,64 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.model.test;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.onap.pomba.contextbuilder.sdc.model.ArtifactInfo;
-import org.onap.sdc.api.notification.IArtifactInfo;
-
-public class ArtifactInfoTest {
-
- @Test
- public void testArtifactInfo() throws Exception {
- String url = "/sdc/v1/catalog/services/e9851a43-c068-4eb2-9fe7-2d123bd94ff0/toscaModel";
- String artifactType = "TOSCA_CSAR";
- ArtifactInfo artifact = new ArtifactInfo();
- artifact.setArtifactType(artifactType);
- artifact.setArtifactURL(url);
- artifact.setArtifactChecksum("artifactChecksum");
- artifact.setArtifactDescription("artifactDescription");
- artifact.setArtifactName("artifactName");
- artifact.setArtifactTimeout(1000);
- artifact.setArtifactUUID("ae04b88e-e2ee-4ce9-a62d-3d08cf0f46db");
- artifact.setArtifactVersion("artifactVersion");
-
- IArtifactInfo generatedArtifactTest = (IArtifactInfo)artifact;
- artifact.setGeneratedArtifact(generatedArtifactTest);
-
- assertEquals(artifactType, artifact.getArtifactType());
- assertEquals(url, artifact.getArtifactURL());
- assertEquals("artifactChecksum", artifact.getArtifactChecksum());
- assertEquals("artifactDescription", artifact.getArtifactDescription());
- assertEquals("artifactName", artifact.getArtifactName());
- assertEquals(Integer.valueOf(1000), artifact.getArtifactTimeout());
- assertEquals("ae04b88e-e2ee-4ce9-a62d-3d08cf0f46db", artifact.getArtifactUUID());
- assertEquals("artifactVersion", artifact.getArtifactVersion());
- assertEquals(generatedArtifactTest, artifact.getGeneratedArtifact());
-
- }
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.model.test;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.pomba.contextbuilder.sdc.model.ArtifactInfo;
+import org.onap.sdc.api.notification.IArtifactInfo;
+
+public class ArtifactInfoTest {
+
+ @Test
+ public void testArtifactInfo() throws Exception {
+ String url = "/sdc/v1/catalog/services/e9851a43-c068-4eb2-9fe7-2d123bd94ff0/toscaModel";
+ String artifactType = "TOSCA_CSAR";
+ ArtifactInfo artifact = new ArtifactInfo();
+ artifact.setArtifactType(artifactType);
+ artifact.setArtifactURL(url);
+ artifact.setArtifactChecksum("artifactChecksum");
+ artifact.setArtifactDescription("artifactDescription");
+ artifact.setArtifactName("artifactName");
+ artifact.setArtifactTimeout(1000);
+ artifact.setArtifactUUID("ae04b88e-e2ee-4ce9-a62d-3d08cf0f46db");
+ artifact.setArtifactVersion("artifactVersion");
+
+ ArtifactInfo artifact2 = new ArtifactInfo();
+
+ artifact2.equals(artifact);
+ artifact.toString();
+ artifact.hashCode();
+
+ IArtifactInfo generatedArtifactTest = (IArtifactInfo)artifact;
+ artifact.setGeneratedArtifact(generatedArtifactTest);
+
+
+ assertEquals(artifactType, artifact.getArtifactType());
+ assertEquals(url, artifact.getArtifactURL());
+ assertEquals("artifactChecksum", artifact.getArtifactChecksum());
+ assertEquals("artifactDescription", artifact.getArtifactDescription());
+ assertEquals("artifactName", artifact.getArtifactName());
+ assertEquals(Integer.valueOf(1000), artifact.getArtifactTimeout());
+ assertEquals("ae04b88e-e2ee-4ce9-a62d-3d08cf0f46db", artifact.getArtifactUUID());
+ assertEquals("artifactVersion", artifact.getArtifactVersion());
+ assertEquals(generatedArtifactTest, artifact.getGeneratedArtifact());
+
+ }
} \ No newline at end of file
diff --git a/src/test/java/org/onap/pomba/contextbuilder/sdc/test/SDCClientConfigurationTest.java b/src/test/java/org/onap/pomba/contextbuilder/sdc/test/SDCClientConfigurationTest.java
index 7bd5f86..acaff43 100644
--- a/src/test/java/org/onap/pomba/contextbuilder/sdc/test/SDCClientConfigurationTest.java
+++ b/src/test/java/org/onap/pomba/contextbuilder/sdc/test/SDCClientConfigurationTest.java
@@ -1,65 +1,43 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.test;
-
-import static org.junit.Assert.assertEquals;
-
-import org.eclipse.jetty.util.security.Password;
-import org.junit.Test;
-import org.onap.pomba.contextbuilder.sdc.SDCClientConfiguration;
-import org.onap.sdc.api.consumer.IConfiguration;
-import org.onap.sdc.http.SdcConnectorClient;
-
-public class SDCClientConfigurationTest {
-
- @Test
- public void testSDCClientConfig() throws Exception {
- SDCClientConfiguration config = new SDCClientConfiguration();
- config.setUsername("pomba");
- config.setSdcAddress("10.147.58.6:30204");
- config.setPassword("OBF:1uha1uh81w8v1ugi1ugg");
- config.setConsumerID("consumerID");
- config.setPollingTimeout("6666");
-
- assertEquals("pomba", config.getUsername());
- assertEquals("10.147.58.6:30204", config.getSdcAddress());
- assertEquals("consumerID", config.getConsumerID());
- assertEquals("pomba", Password.deobfuscate(config.getPassword()));
- assertEquals("6666", config.getPollingTimeout());
-
- SdcConnectorClient sdcClient = config.asdcConnectorClient();
- IConfiguration sdcClientConfig = sdcClient.getConfiguration();
- assertEquals("pomba", sdcClientConfig.getUser());
- assertEquals("10.147.58.6:30204", sdcClientConfig.getAsdcAddress());
- assertEquals("consumerID", sdcClientConfig.getConsumerID());
- assertEquals("pomba", sdcClientConfig.getPassword());
- assertEquals(6666, sdcClientConfig.getPollingTimeout());
-
- }
-
-
- @Test
- public void testGetHttpBasicAuth() {
- String msg = "Basic YWRtaW46YWRtaW4=";
- SDCClientConfiguration config = new SDCClientConfiguration();
- config.setHttpUserId("admin");
- config.setHttpPassword("OBF:1u2a1toa1w8v1tok1u30");
- assertEquals(msg, config.getHttpBasicAuth());
- }
-}
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.test;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.pomba.contextbuilder.sdc.SDCClientConfiguration;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class SDCClientConfigurationTest {
+ SDCClientConfiguration configuration = mock(SDCClientConfiguration.class);
+
+ @Test
+ public void testGetHttpBasicAuth() {
+
+ SDCClientConfiguration configuration2 = new SDCClientConfiguration();
+ configuration2.equals(configuration);
+ configuration.hashCode();
+ configuration.toString();
+
+ String msg = "Basic YWRtaW46YWRtaW4=";
+ when(configuration.getHttpBasicAuth()).thenReturn(msg);
+ assertEquals(msg, configuration.getHttpBasicAuth());
+ }
+}
diff --git a/src/test/java/org/onap/pomba/contextbuilder/sdc/test/ToscaBuildConfigTest.java b/src/test/java/org/onap/pomba/contextbuilder/sdc/test/ToscaBuildConfigTest.java
index b865dc1..964e2bb 100644
--- a/src/test/java/org/onap/pomba/contextbuilder/sdc/test/ToscaBuildConfigTest.java
+++ b/src/test/java/org/onap/pomba/contextbuilder/sdc/test/ToscaBuildConfigTest.java
@@ -1,56 +1,60 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-import org.onap.pomba.contextbuilder.sdc.ToscaBuilderConfig;
-
-public class ToscaBuildConfigTest {
-
-
- @Test
- public void testToscaBuilderConfig() throws Exception {
-
- String urlTemplate = "/sdc/v1/catalog/services/e9851a43-c068-4eb2-9fe7-2d123bd94ff0/toscaModel";
- ToscaBuilderConfig configTest = new ToscaBuilderConfig();
- configTest.setCsarFilePrefix("csar-");
- configTest.setCsarFileSuffix(".zip");
- configTest.setArtifactType("TOSCA_CSAR");
- configTest.setUrlTemplate(urlTemplate);
- configTest.setTestToscaCsarFile("/src/test/toscaModel.zip");
-
- assertEquals("csar-", configTest.getCsarFilePrefix());
- assertEquals(".zip", configTest.getCsarFileSuffix());
- assertEquals("TOSCA_CSAR", configTest.getArtifactType());
- assertEquals(urlTemplate, configTest.getUrlTemplate());
- assertEquals("/src/test/toscaModel.zip", configTest.getTestToscaCsarFile());
-
- String str = configTest.toString();
- assertTrue(str.contains("TOSCA_CSAR"));
- assertTrue(str.contains("csar-"));
- assertTrue(str.contains(".zip"));
- assertTrue(str.contains("/sdc/v1/catalog/services/e9851a43-c068-4eb2-9fe7-2d123bd94ff0/toscaModel"));
- assertTrue(str.contains("/src/test/toscaModel.zip"));
-
- }
-
-}
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import org.junit.Test;
+import org.onap.pomba.contextbuilder.sdc.ToscaBuilderConfig;
+
+public class ToscaBuildConfigTest {
+
+
+ @Test
+ public void testToscaBuilderConfig() throws Exception {
+
+ ToscaBuilderConfig configTest = mock(ToscaBuilderConfig.class);
+
+ ToscaBuilderConfig configTest2 = new ToscaBuilderConfig();
+ configTest.equals(configTest2);
+ configTest.toString();
+ configTest.hashCode();
+
+ String fPrefix = "csar-";
+ when(configTest.getCsarFilePrefix()).thenReturn(fPrefix);
+ String fSuffix = ".zip";
+ when(configTest.getCsarFileSuffix()).thenReturn(fSuffix);
+ String artifactType = "TOSCA_CSAR";
+ when(configTest.getArtifactType()).thenReturn(artifactType);
+ String urlTemplate = "/sdc/v1/catalog/services/e9851a43-c068-4eb2-9fe7-2d123bd94ff0/toscaModel";
+ when(configTest.getUrlTemplate()).thenReturn(urlTemplate);
+ String toscaCsarFile = "/src/test/toscaModel.zip";
+ configTest.setTestToscaCsarFile(toscaCsarFile);
+ when(configTest.getTestToscaCsarFile()).thenReturn(toscaCsarFile);
+
+ configTest.toString();
+ assertEquals("csar-", configTest.getCsarFilePrefix());
+ assertEquals(".zip", configTest.getCsarFileSuffix());
+ assertEquals("TOSCA_CSAR", configTest.getArtifactType());
+ assertEquals(urlTemplate, configTest.getUrlTemplate());
+ assertEquals("/src/test/toscaModel.zip", configTest.getTestToscaCsarFile());
+ }
+
+}
diff --git a/src/test/java/org/onap/pomba/contextbuilder/sdc/unittest/service/SDCContextBuilderTest.java b/src/test/java/org/onap/pomba/contextbuilder/sdc/unittest/service/SDCContextBuilderTest.java
index 1dd000c..b889b9d 100644
--- a/src/test/java/org/onap/pomba/contextbuilder/sdc/unittest/service/SDCContextBuilderTest.java
+++ b/src/test/java/org/onap/pomba/contextbuilder/sdc/unittest/service/SDCContextBuilderTest.java
@@ -1,186 +1,206 @@
-/*
- * ============LICENSE_START===================================================
- * Copyright (c) 2018 Amdocs
- * ============================================================================
- * 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.pomba.contextbuilder.sdc.unittest.service;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Paths;
-import java.util.Base64;
-import java.util.UUID;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.pomba.contextbuilder.sdc.model.SDCContextRequest;
-import org.onap.pomba.contextbuilder.sdc.model.SDCContextResponse;
-import org.onap.pomba.contextbuilder.sdc.service.SpringService;
-import org.onap.pomba.contextbuilder.sdc.service.rs.RestService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
-@WebAppConfiguration
-@SpringBootTest
-public class SDCContextBuilderTest {
-
- static {
- System.setProperty("test.tosca.csar.file",
- Paths.get(System.getProperty("user.dir"),
- "src/test/resources/toscaModel.csar.zip").toString());
- }
-
-
- @Autowired
- private RestService service;
- @Autowired
- private SpringService springService;
-
-
- private String authorization = "Basic "
- + Base64.getEncoder()
- .encodeToString(("admin" + ":" + "admin")
- .getBytes(StandardCharsets.UTF_8));
- private String fromAppId = "POMBA";
- private String transactionId = UUID.randomUUID().toString();
- private String serviceInstanceId = "b06270ab-99e6-4a58-9bc0-db2df5c36f4d";
- private String modelVersionId = "e9851a43-c068-4eb2-9fe7-2d123bd94ff0";
- private String modelInvariantId = "4fd21763-23ed-4f69-8654-e121626df327" ;
-
- @Before
- public void setUp() throws Exception {
- }
-
- @After
- public void tearDown() throws Exception {
- }
-
-
- @Test
- public void testNoAuthHeader() throws Exception {
- Response response = this.service.getContext(null,
- fromAppId,
- transactionId,
- serviceInstanceId,
- modelVersionId,
- modelInvariantId);
- assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
-
- }
-
- @Test
- public void testBadAuthoriztion() throws Exception {
- String authorizationTest = "Basic "
- + Base64.getEncoder()
- .encodeToString(("Test" + ":" + "Fake")
- .getBytes(StandardCharsets.UTF_8));
- Response response = this.service.getContext(authorizationTest,
- fromAppId,
- transactionId,
- serviceInstanceId,
- modelVersionId,
- modelInvariantId);
- assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
- }
-
- @Test
- public void testNullXFromAppId() throws Exception {
- Response response = this.service.getContext(authorization,
- null,
- transactionId,
- serviceInstanceId,
- modelVersionId,
- modelInvariantId);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertTrue(((String)response.getEntity()).contains("X-FromAppId"));
- }
-
-
- @Test
- public void testEmptyXFromAppId() throws Exception {
- Response response = this.service.getContext(authorization,
- "",
- transactionId,
- serviceInstanceId,
- modelVersionId,
- modelInvariantId);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertTrue(((String)response.getEntity()).contains("X-FromAppId"));
- }
-
-
- @Test
- public void testNullModelVersionId() throws Exception {
- Response response = this.service.getContext(authorization,
- fromAppId,
- transactionId,
- serviceInstanceId,
- null,
- modelInvariantId);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertTrue(((String)response.getEntity()).contains("modelVersionId"));
- }
-
-
- @Test
- public void testEmptyModelVersionId() throws Exception {
- Response response = this.service.getContext(authorization,
- fromAppId,
- transactionId,
- serviceInstanceId,
- "",
- modelInvariantId);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertTrue(((String)response.getEntity()).contains("modelVersionId"));
- }
-
-
- @Test
- public void testRestAPISuccess() throws Exception {
- Response response = this.service.getContext(authorization,
- fromAppId,
- transactionId,
- serviceInstanceId,
- modelVersionId,
- modelInvariantId);
- assertEquals(200, response.getStatus());
- }
-
-
- @Test
- public void testSDCContextResponse() throws Exception {
- SDCContextRequest request = new SDCContextRequest(null, authorization, fromAppId, transactionId,
- serviceInstanceId, modelVersionId, modelInvariantId);
- SDCContextResponse sdcResponse = springService.getModelData(request);
- assertTrue(sdcResponse.getModelData().contains("service"));
- assertTrue(sdcResponse.getModelData().contains("vnfList"));
- }
-
-
-}
+/*
+ * ============LICENSE_START===================================================
+ * Copyright (c) 2018 Amdocs
+ * ============================================================================
+ * 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.pomba.contextbuilder.sdc.unittest.service;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
+import java.util.Base64;
+import java.util.UUID;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.pomba.contextbuilder.sdc.model.SDCContextRequest;
+import org.onap.pomba.contextbuilder.sdc.model.SDCContextResponse;
+import org.onap.pomba.contextbuilder.sdc.service.SpringService;
+import org.onap.pomba.contextbuilder.sdc.service.rs.RestService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+import java.util.List;
+import org.onap.pomba.common.datatypes.ModelContext;
+import org.onap.pomba.common.datatypes.VFModule;
+import org.onap.pomba.common.datatypes.VNF;
+import com.google.gson.Gson;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
+@WebAppConfiguration
+@SpringBootTest
+public class SDCContextBuilderTest {
+
+ static {
+ System.setProperty("test.tosca.csar.file",
+ Paths.get(System.getProperty("user.dir"),
+ "src/test/resources/toscaModel.csar.zip").toString());
+ }
+
+
+ @Autowired
+ private RestService service;
+ @Autowired
+ private SpringService springService;
+
+
+ private String authorization = "Basic "
+ + Base64.getEncoder()
+ .encodeToString(("admin" + ":" + "admin")
+ .getBytes(StandardCharsets.UTF_8));
+ private String fromAppId = "POMBA";
+ private String transactionId = UUID.randomUUID().toString();
+ private String serviceInstanceId = "b06270ab-99e6-4a58-9bc0-db2df5c36f4d";
+ private String modelVersionId = "f55354f4-da10-48ee-b4a5-cca31cdebc72";
+ private String modelInvariantId = "4fd21763-23ed-4f69-8654-e121626df327" ;
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+
+ @Test
+ public void testNoAuthHeader() throws Exception {
+ Response response = this.service.getContext(null,
+ fromAppId,
+ transactionId,
+ serviceInstanceId,
+ modelVersionId,
+ modelInvariantId);
+ assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
+
+ }
+
+ @Test
+ public void testBadAuthoriztion() throws Exception {
+ String authorizationTest = "Basic "
+ + Base64.getEncoder()
+ .encodeToString(("Test" + ":" + "Fake")
+ .getBytes(StandardCharsets.UTF_8));
+ Response response = this.service.getContext(authorizationTest,
+ fromAppId,
+ transactionId,
+ serviceInstanceId,
+ modelVersionId,
+ modelInvariantId);
+ assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testNullXFromAppId() throws Exception {
+ Response response = this.service.getContext(authorization,
+ null,
+ transactionId,
+ serviceInstanceId,
+ modelVersionId,
+ modelInvariantId);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("X-FromAppId"));
+ }
+
+
+ @Test
+ public void testEmptyXFromAppId() throws Exception {
+ Response response = this.service.getContext(authorization,
+ "",
+ transactionId,
+ serviceInstanceId,
+ modelVersionId,
+ modelInvariantId);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("X-FromAppId"));
+ }
+
+
+ @Test
+ public void testNullModelVersionId() throws Exception {
+ Response response = this.service.getContext(authorization,
+ fromAppId,
+ transactionId,
+ serviceInstanceId,
+ null,
+ modelInvariantId);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("modelVersionId"));
+ }
+
+
+ @Test
+ public void testEmptyModelVersionId() throws Exception {
+ Response response = this.service.getContext(authorization,
+ fromAppId,
+ transactionId,
+ serviceInstanceId,
+ "",
+ modelInvariantId);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ assertTrue(((String)response.getEntity()).contains("modelVersionId"));
+ }
+
+
+ @Test
+ public void testRestAPISuccess() throws Exception {
+ Response response = this.service.getContext(authorization,
+ fromAppId,
+ transactionId,
+ serviceInstanceId,
+ modelVersionId,
+ modelInvariantId);
+ assertEquals(200, response.getStatus());
+
+ Gson gson = new Gson();
+ ModelContext modelCtx = gson.fromJson((String) response.getEntity(), ModelContext.class);
+
+
+ // verify results
+ assertEquals(serviceInstanceId, modelCtx.getService().getUuid());
+ assertEquals(modelVersionId, modelCtx.getService().getModelVersionID());
+
+ List<VNF> vnfList = modelCtx.getVnfs();
+ assertEquals(vnfList.size(), 1);
+ List<VFModule> vfModuleList = vnfList.get(0).getVfModules();
+ assertEquals(vfModuleList.size(), 1);
+ assertEquals("8e363c35-60eb-45c0-9f14-2f3936f460c9",vfModuleList.get(0).getModelVersionID() ); // ModelVersionId was set to vfModuleModelUUID of test data
+
+ }
+
+
+ @Test
+ public void testSDCContextResponse() throws Exception {
+ SDCContextRequest request = new SDCContextRequest(null, authorization, fromAppId, transactionId,
+ serviceInstanceId, modelVersionId, modelInvariantId);
+ SDCContextResponse sdcResponse = springService.getModelData(request);
+ assertTrue(sdcResponse.getModelData().contains("service"));
+ assertTrue(sdcResponse.getModelData().contains("vnfList"));
+ }
+
+
+}