X-Git-Url: https://gerrit.onap.org/r/gitweb?p=multicloud%2Fframework.git;a=blobdiff_plain;f=artifactbroker%2Fplugins%2Freception-plugins%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fdistribution%2Freception%2Fhandling%2Fsdc%2FSdcReceptionHandler.java;h=48ee0ea5dbff728b5ff4ce44a2a87b8592a81e2d;hp=6b8f3b618db425eb97058e84fde22e76142b00ff;hb=3d4db216873da17cc6dfdddfb78553bb325647fd;hpb=999748a64e72b9a7975ddac3406eb95a0b9aeaff diff --git a/artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandler.java b/artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandler.java index 6b8f3b6..48ee0ea 100644 --- a/artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandler.java +++ b/artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandler.java @@ -20,16 +20,20 @@ package org.onap.policy.distribution.reception.handling.sdc; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; -import java.util.List; import java.util.HashMap; +import java.util.List; +import java.lang.reflect.Type; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; @@ -218,25 +222,33 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo */ public void processVfModulesArtifacts(final INotificationData notificationData, IResourceInstance resource) { boolean artifactsProcessedSuccessfully = true; + LOGGER.debug("start process VF MODULES_METADATA: " ); DistributionStatisticsManager.updateTotalDistributionCount(); List relevantArtifactTypes = sdcConfig.getRelevantArtifactTypes(); Path path = Paths.get("/data"); ArrayList vfModuleModels = new ArrayList<>(); HashMap artifactMap = new HashMap<>();//key is UUID, value is artifact for shared folder String vfArtifactData = null; + IArtifactInfo vfModuleMetaDataArtifact = null; for (final IArtifactInfo artifact : resource.getArtifacts()) { artifactMap.put(artifact.getArtifactUUID(),artifact); - //extract the artifactlist and write them into MongoDB + //extract the artifactlist and write them into MongoDB if (artifact.getArtifactType().equals("VF_MODULES_METADATA")) { try { final IDistributionClientDownloadResult resultArtifact = downloadTheArtifact(artifact,notificationData); - vfArtifactData = new String(resultArtifact.getArtifactPayload()); - vfModuleModels= GsonUtil.parseJsonArrayWithGson(vfArtifactData,VfModuleModel.class); - } catch (final ArtifactDownloadException exp) { - LOGGER.error("Failed to process csar service artifacts ", exp); + if (resultArtifact != null) { + vfArtifactData = new String(resultArtifact.getArtifactPayload(),"UTF-8"); + LOGGER.debug("VF_MODULE_ARTIFACT: " + new String(resultArtifact.getArtifactPayload(),"UTF-8")); + } + Type listType = new TypeToken>(){}.getType(); + vfModuleModels = new Gson().fromJson(vfArtifactData,listType); + LOGGER.debug("pass to process VF_MODULES_METADATA artifacts "); + vfModuleMetaDataArtifact = artifact; + } catch (final ArtifactDownloadException | UnsupportedEncodingException exp) { + LOGGER.error("Failed to process csar VF_MODULES_METADATA artifacts ", exp); artifactsProcessedSuccessfully = false; sendDistributionStatus(DistributionStatusType.DEPLOY, artifact.getArtifactURL(), notificationData.getDistributionID(), DistributionStatusEnum.DEPLOY_ERROR, @@ -256,22 +268,26 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo Path temp = Paths.get("/data",vfModule.getVfModuleModelCustomizationUUID()); path = Files.createDirectory(temp);//create UUID path //store the value to vfmodule-meta.json - String filePath = Paths.get("/data",vfModule.getVfModuleModelCustomizationUUID(),"vfmodule-meta.json").toString(); + String filePath = Paths.get("/data",vfModule.getVfModuleModelCustomizationUUID(), + "vfmodule-meta.json").toString(); writeFileByFileWriter(filePath, vfArtifactData); //store the service level info to serivce-meta.json - filePath = Paths.get("/data",vfModule.getVfModuleModelCustomizationUUID(),"service-meta.json").toString(); + filePath = Paths.get("/data",vfModule.getVfModuleModelCustomizationUUID(), + "service-meta.json").toString(); writeFileByFileWriter(filePath, notificationData.toString()); + LOGGER.debug("pass to create directory artifact file"); } catch (final IOException exp) { LOGGER.error("Failed to create directory artifact file", exp); } - for(final String uuid : vfModule.getArtifacts()) { + for (final String uuid : vfModule.getArtifacts()) { try { IArtifactInfo artifact = artifactMap.get(uuid); final IDistributionClientDownloadResult resultArtifact = downloadTheArtifact(artifact, notificationData); writeArtifactToDir(artifact,resultArtifact,path); + LOGGER.debug("pass to write Artifact to dir "); } catch (final ArtifactDownloadException exp) { - LOGGER.error("Failed to process csar service artifacts ", exp); + LOGGER.error("Failed to write artifact to dir ", exp); artifactsProcessedSuccessfully = false; sendDistributionStatus(DistributionStatusType.DEPLOY, artifactMap.get(uuid).getArtifactURL(), notificationData.getDistributionID(), DistributionStatusEnum.DEPLOY_ERROR, @@ -284,6 +300,7 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo try { final CloudArtifact cloudArtifact = new CloudArtifact(vfModuleModels, artifactMap); inputReceived(cloudArtifact); + LOGGER.debug("pass to process cloud artifacts "); } catch ( final PolicyDecodingException exp) { LOGGER.error("Failed to process cloud artifacts ", exp); artifactsProcessedSuccessfully = false; @@ -293,11 +310,20 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo DistributionStatisticsManager.updateDistributionSuccessCount(); sendComponentDoneStatus(notificationData.getDistributionID(), DistributionStatusEnum.COMPONENT_DONE_OK, null); + if (vfModuleMetaDataArtifact != null) { + LOGGER.debug("one vfModuleMetaDataArtifact found" ); + sendDistributionStatus(DistributionStatusType.DEPLOY, vfModuleMetaDataArtifact.getArtifactURL(), + notificationData.getDistributionID(), DistributionStatusEnum.DEPLOY_OK, null); + } else { + LOGGER.debug("no vfModuleMetaDataArtifact found" ); + } + } else { DistributionStatisticsManager.updateDistributionFailureCount(); sendComponentDoneStatus(notificationData.getDistributionID(), DistributionStatusEnum.COMPONENT_DONE_ERROR, "Failed to process the artifact"); } + LOGGER.debug("end process VF MODULES_METADATA: " ); } /** @@ -336,9 +362,11 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo private static void writeFileByFileWriter(String filePath, String content) throws IOException { File file = new File(filePath); synchronized (file) { - FileWriter fw = new FileWriter(filePath); - fw.write(content); - fw.close(); + try (FileWriter fw = new FileWriter(filePath)) { + fw.write(content); + } catch (final IOException exp) { + LOGGER.error("Failed to write File by File Writer ", exp); + } } } /**