From 13b9505921e2cbbd4b155a78bfdaa5caa3375ec0 Mon Sep 17 00:00:00 2001 From: Ramya Balaji Date: Tue, 2 Jan 2018 21:58:59 -0500 Subject: Updated SDC listener and dependent bundles Changes related to SDC adapter.Also includes sequence generator changes and changes to appc-dg-shared. Issue-ID: APPC-355 Change-Id: Ib8a0b1d304199db6d2595291539b266885842d63 Signed-off-by: Ramya Balaji --- .../artifacts/helper/DependencyModelGenerator.java | 9 ++++- .../artifacts/impl/ConfigArtifactProcessor.java | 13 +++++- .../artifacts/impl/ToscaCsarArtifactProcessor.java | 19 +++++++-- .../org/onap/appc/sdc/listener/SdcCallback.java | 14 ++++--- .../java/org/onap/appc/sdc/listener/SdcConfig.java | 45 +++++++++++++++++++-- .../org/onap/appc/sdc/listener/SdcConfigTest.java | 46 ++++++++++++++++++++++ 6 files changed, 132 insertions(+), 14 deletions(-) create mode 100644 appc-sdc-listener/appc-sdc-listener-bundle/src/test/java/org/onap/appc/sdc/listener/SdcConfigTest.java (limited to 'appc-sdc-listener/appc-sdc-listener-bundle') diff --git a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/helper/DependencyModelGenerator.java b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/helper/DependencyModelGenerator.java index 295ee47c8..62212d74c 100644 --- a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/helper/DependencyModelGenerator.java +++ b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/helper/DependencyModelGenerator.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import org.onap.appc.dg.dependencymanager.helper.DependencyModelParser; +import org.onap.appc.dg.flowbuilder.exception.InvalidDependencyModelException; import org.onap.appc.dg.objects.Node; import org.onap.appc.dg.objects.VnfcDependencyModel; import org.onap.appc.domainmodel.Vnfc; @@ -58,7 +59,13 @@ public class DependencyModelGenerator { logger.debug(String.format("Generating dependency model for vnfType : %s , TOSCA: %s ", vnfType ,tosca)); String dependencyJson; DependencyModelParser dependencyModelParser = new DependencyModelParser(); - VnfcDependencyModel vnfcDependencyModel = dependencyModelParser.generateDependencyModel(tosca, vnfType); + VnfcDependencyModel vnfcDependencyModel = null; + try { + vnfcDependencyModel = dependencyModelParser.generateDependencyModel(tosca, vnfType); + } catch (InvalidDependencyModelException e) { + logger.error("Error generating dependency model"); + throw new APPCException(e.getMessage(),e); + } if (vnfcDependencyModel != null && !vnfcDependencyModel.getDependencies().isEmpty()) { logger.debug(String.format("Dependency Model generated : %s ", vnfcDependencyModel.toString())); diff --git a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ConfigArtifactProcessor.java b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ConfigArtifactProcessor.java index 41230ea30..b9eedc466 100644 --- a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ConfigArtifactProcessor.java +++ b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ConfigArtifactProcessor.java @@ -24,6 +24,7 @@ package org.onap.appc.sdc.artifacts.impl; +import org.apache.commons.lang.StringUtils; import org.onap.appc.adapter.message.EventSender; import org.onap.appc.sdc.listener.ProviderOperations; import org.onap.appc.sdc.listener.ProviderResponse; @@ -63,11 +64,21 @@ public class ConfigArtifactProcessor extends AbstractArtifactProcessor { @Override public void processArtifact(SDCArtifact artifact) throws APPCException { String postData = Util.toSdcStoreDocumentInput(notification, resource, super.artifact, artifact.getArtifactContent()); + logger.debug("ConfigArtifactProcessor::processArtifact::postData="+postData); try { - ProviderResponse result = ProviderOperations.post(storeUri.toURL(), postData, null); + ProviderOperations providerOperations = new ProviderOperations(); + if (null != storeUri) + logger.debug("ConfigArtifactProcessor::processArtifact::URI is"+storeUri.toString()); + ProviderResponse result = providerOperations.post(storeUri.toURL(), postData, null); if (result.getStatus() == 200) { + logger.debug("ConfigArtifactProcessor::processArtifact::post request success!!"); Util.parseResponse(result.getBody()); } + else { + logger.debug("ConfigArtifactProcessor::processArtifact()::post request failed!! Returned :" + +result.getStatus()+"-Result body- "+result.getBody()); + throw new APPCException("ConfigArtifactProcessor::processArtifact: Invalid status retrurned from post "+result.getStatus()); + } } catch (MalformedURLException | APPCException e) { logger.error("Error processing artifact : " + this.artifact.toString(),e); throw new APPCException(e.getMessage(),e); diff --git a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ToscaCsarArtifactProcessor.java b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ToscaCsarArtifactProcessor.java index 46a37273f..4cc4cfbdb 100644 --- a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ToscaCsarArtifactProcessor.java +++ b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/artifacts/impl/ToscaCsarArtifactProcessor.java @@ -42,7 +42,16 @@ import org.openecomp.sdc.api.notification.INotificationData; import org.openecomp.sdc.api.notification.IResourceInstance; import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; -import java.io.*; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URI; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; import java.net.URI; import java.util.*; import java.util.zip.ZipEntry; @@ -54,8 +63,12 @@ public class ToscaCsarArtifactProcessor extends AbstractArtifactProcessor{ private DependencyModelGenerator dependencyModelGenerator; - public ToscaCsarArtifactProcessor(IDistributionClient client, EventSender eventSender, INotificationData notification, IResourceInstance resource, - IArtifactInfo artifact, URI storeUri){ + public ToscaCsarArtifactProcessor(IDistributionClient client, + EventSender eventSender, + INotificationData notification, + IResourceInstance resource, + IArtifactInfo artifact, + URI storeUri){ super(client,eventSender,notification,resource,artifact,storeUri); dependencyModelGenerator = new DependencyModelGenerator(); } diff --git a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcCallback.java b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcCallback.java index 8be458200..a3d82a703 100644 --- a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcCallback.java +++ b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcCallback.java @@ -49,7 +49,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public class SdcCallback implements INotificationCallback { private final EELFLogger logger = EELFManager.getInstance().getLogger(SdcCallback.class); - private ArtifactProcessorFactory artifactProcessorFactory=new ArtifactProcessorFactory(); + private ArtifactProcessorFactory artifactProcessorFactory = new ArtifactProcessorFactory(); private URI storeUri; private IDistributionClient client; @@ -92,7 +92,8 @@ public class SdcCallback implements INotificationCallback { if (isRunning.get()) { for(IArtifactInfo artifact:data.getServiceArtifacts()){ - ArtifactProcessor artifactProcessor = artifactProcessorFactory.getArtifactProcessor(client, eventSender, data, null, artifact, storeUri); + ArtifactProcessor artifactProcessor = artifactProcessorFactory.getArtifactProcessor( + client, eventSender, data, null, artifact, storeUri); if(artifactProcessor!=null){ executor.submit(artifactProcessor); } @@ -102,9 +103,11 @@ public class SdcCallback implements INotificationCallback { for (IArtifactInfo artifact : resource.getArtifacts()) { logger.info(Util.toSdcStoreDocumentInput(data, resource, artifact, "abc")); if (executor.getQueue().size() >= threadCount) { - // log warning about job backlog + logger.warn(String.format("excuter queue size (%d) is exceeding thread count (%s).", + executor.getQueue().size(), threadCount)); } - ArtifactProcessor artifactProcessor = artifactProcessorFactory.getArtifactProcessor(client, eventSender, data, resource, artifact, storeUri); + ArtifactProcessor artifactProcessor = artifactProcessorFactory.getArtifactProcessor( + client, eventSender, data, resource, artifact, storeUri); if(artifactProcessor != null){ executor.submit(artifactProcessor); } @@ -115,7 +118,8 @@ public class SdcCallback implements INotificationCallback { we are sending the download status as positive just to have the same behaviour as before refactoring. */ - client.sendDownloadStatus(Util.buildDistributionStatusMessage(client, data, artifact, DistributionStatusEnum.DOWNLOAD_OK)); + client.sendDownloadStatus(Util.buildDistributionStatusMessage( + client, data, artifact, DistributionStatusEnum.DOWNLOAD_OK)); logger.error("Artifact type not supported : " + artifact.getArtifactType()); } } diff --git a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcConfig.java b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcConfig.java index 86ba9e1f5..2acb2e625 100644 --- a/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcConfig.java +++ b/appc-sdc-listener/appc-sdc-listener-bundle/src/main/java/org/onap/appc/sdc/listener/SdcConfig.java @@ -34,6 +34,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import org.apache.commons.lang.StringUtils; public class SdcConfig implements IConfiguration { @@ -50,11 +51,8 @@ public class SdcConfig implements IConfiguration { private List types = new ArrayList<>(); private String user; private String pass; - private URI storeOp; - private Properties props; - private final EELFLogger logger = EELFManager.getInstance().getLogger(SdcConfig.class); SdcConfig(Properties props) throws Exception { @@ -67,7 +65,6 @@ public class SdcConfig implements IConfiguration { logger.error("SdcConfig init is skipped due to properties is null"); return; } - // Keystore for ca cert keystorePath = props.getProperty("appc.sdc.keystore.path"); keystorePass = props.getProperty("appc.sdc.keystore.pass"); @@ -181,6 +178,31 @@ public class SdcConfig implements IConfiguration { return true; } + @Override + public List getMsgBusAddress() { + return (getMsgBusProperties()); + } + + public List getMsgBusProperties() { + List uebAddresses = new ArrayList(); + String uebAddressesList=null; + if (null != this.props) + uebAddressesList = this.props.getProperty("appc.ClosedLoop.poolMembers"); + else { + logger.info("SdcConfig:SdcConfig:getMsgBusProperties()::props is null for SdcConfig"); + return null; + } + if (null == uebAddressesList) { + logger.info("SdcConfig:SdcConfig:getMsgBusProperties()::uebAddressesList is null for SdcConfig"); + return null; + } + logger.debug("SdcConfig:SdcConfig:getMsgBusProperties()::uebAddressesList is="+ uebAddressesList); + String[] sList = uebAddressesList.split(","); + uebAddresses= formatAddresses(sList); + logger.debug("SdcConfig:getMsgBusProperties:::Returning addresses as "+uebAddresses.toString()); + return uebAddresses; + } + URI getStoreOpURI() { return storeOp; } @@ -199,4 +221,19 @@ public class SdcConfig implements IConfiguration { logger.info(String.format("SDC Params: %s", params)); } + + protected List formatAddresses(String[] sList) { + List uebAddresses = new ArrayList(); + for (String fqdnPort:sList) { + if (fqdnPort.startsWith("http")) { + fqdnPort=StringUtils.substringAfter(fqdnPort, "://"); + } + if (null != fqdnPort && fqdnPort.contains(":")) { + fqdnPort=StringUtils.substringBefore(fqdnPort,":"); + } + logger.debug("SdcConfig:formatAddresses:: "+fqdnPort); + uebAddresses.add(fqdnPort); + } + return uebAddresses; + } } diff --git a/appc-sdc-listener/appc-sdc-listener-bundle/src/test/java/org/onap/appc/sdc/listener/SdcConfigTest.java b/appc-sdc-listener/appc-sdc-listener-bundle/src/test/java/org/onap/appc/sdc/listener/SdcConfigTest.java new file mode 100644 index 000000000..f799db5e1 --- /dev/null +++ b/appc-sdc-listener/appc-sdc-listener-bundle/src/test/java/org/onap/appc/sdc/listener/SdcConfigTest.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.sdc.listener; + +import static org.junit.Assert.assertNotNull; + +import java.util.List; +import java.util.Properties; + +import org.junit.Test; + +public class SdcConfigTest { + + @Test + public void testGetMsgBusProperties() throws Exception { + Properties properties = new Properties(); + properties.setProperty("appc.sdc.provider.url", + "http://localhost:8181/restconf/operations/SdcMessage:configuration-document-request"); + properties.setProperty("appc.ClosedLoop.poolMembers","uebsb91bodc.it.att.com:3905,uebsb92bodc.it.att.com:3905,uebsb93bodc.it.att.com:3905"); + SdcConfig sdc = new SdcConfig(properties); + List uebAddresses = sdc.getMsgBusProperties(); + assertNotNull(uebAddresses); + } +} -- cgit 1.2.3-korg