diff options
author | 2019-05-23 10:35:53 +0800 | |
---|---|---|
committer | 2019-05-23 10:35:53 +0800 | |
commit | 3d4db216873da17cc6dfdddfb78553bb325647fd (patch) | |
tree | 563665fe164f4e54ff768da46db9768bdd6b888e /artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception | |
parent | 1075291fa80c49e9b0348eff28a6a97cd64d92e1 (diff) |
Fix the Gson parse issue while deals with List of IVfModuledata
use generic method to deal with list of IVfModuledata
send back deploy ok back to SDC once done
add more debug info
Change-Id: Ifed3b50b6bd04888479653b100a713ef8162eab7
Issue-ID: MULTICLOUD-643
Signed-off-by: liboNet <libo.zhu@intel.com>
Diffstat (limited to 'artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception')
-rw-r--r-- | artifactbroker/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandler.java | 36 |
1 files changed, 30 insertions, 6 deletions
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 8bf69da..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.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,12 +222,14 @@ 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<String> relevantArtifactTypes = sdcConfig.getRelevantArtifactTypes(); Path path = Paths.get("/data"); ArrayList<VfModuleModel> vfModuleModels = new ArrayList<>(); HashMap<String, IArtifactInfo> 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); @@ -233,10 +239,16 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo 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<ArrayList<VfModuleModel>>(){}.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, @@ -263,17 +275,19 @@ public class SdcReceptionHandler extends AbstractReceptionHandler implements INo 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, @@ -286,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; @@ -295,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: " ); } /** |