-/**\r
- * ============LICENSE_START=======================================================\r
- * Model Loader\r
- * ================================================================================\r
- * Copyright © 2017 AT&T Intellectual Property.\r
- * Copyright © 2017 Amdocs\r
- * All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- *\r
- * ECOMP and OpenECOMP are trademarks\r
- * and service marks of AT&T Intellectual Property.\r
- */\r
-package org.openecomp.modelloader.notification;\r
-\r
-import org.openecomp.sdc.api.IDistributionClient;\r
-import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;\r
-import org.openecomp.sdc.api.consumer.INotificationCallback;\r
-import org.openecomp.sdc.api.notification.IArtifactInfo;\r
-import org.openecomp.sdc.api.notification.INotificationData;\r
-import org.openecomp.sdc.api.notification.IResourceInstance;\r
-import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;\r
-import org.openecomp.sdc.api.results.IDistributionClientResult;\r
-import org.openecomp.sdc.utils.ArtifactTypeEnum;\r
-import org.openecomp.sdc.utils.DistributionActionResultEnum;\r
-import org.openecomp.sdc.utils.DistributionStatusEnum;\r
-\r
-import org.openecomp.cl.api.Logger;\r
-import org.openecomp.cl.eelf.LoggerFactory;\r
-import org.openecomp.cl.mdc.MdcContext;\r
-import org.openecomp.cl.mdc.MdcOverride;\r
-import org.openecomp.modelloader.config.ModelLoaderConfig;\r
-import org.openecomp.modelloader.entity.Artifact;\r
-import org.openecomp.modelloader.entity.catalog.VnfCatalogArtifact;\r
-import org.openecomp.modelloader.entity.catalog.VnfCatalogArtifactHandler;\r
-import org.openecomp.modelloader.entity.model.ModelArtifactHandler;\r
-import org.openecomp.modelloader.entity.model.ModelArtifactParser;\r
-import org.openecomp.modelloader.service.ModelLoaderMsgs;\r
-import org.slf4j.MDC;\r
-\r
-import java.text.SimpleDateFormat;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-public class EventCallback implements INotificationCallback {\r
-\r
- private IDistributionClient client;\r
- private ModelLoaderConfig config;\r
- private static Logger logger = LoggerFactory.getInstance()\r
- .getLogger(EventCallback.class.getName());\r
- private static Logger auditLogger = LoggerFactory.getInstance()\r
- .getAuditLogger(EventCallback.class.getName());\r
- private static Logger metricsLogger = LoggerFactory.getInstance()\r
- .getMetricsLogger(EventCallback.class.getName());\r
-\r
- private static SimpleDateFormat dateFormatter = new SimpleDateFormat(\r
- "yyyy-MM-dd'T'HH:mm:ss.SSSXXX");\r
-\r
- public EventCallback(IDistributionClient client, ModelLoaderConfig config) {\r
- this.client = client;\r
- this.config = config;\r
- }\r
-\r
- @Override\r
- public void activateCallback(INotificationData data) {\r
- // Init MDC\r
- MdcContext.initialize(data.getDistributionID(), "ModelLoader", "", "Event-Bus", "");\r
-\r
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,\r
- "Received distribution " + data.getDistributionID());\r
-\r
- boolean success = true;\r
- List<IArtifactInfo> artifacts = getArtifacts(data);\r
- List<Artifact> modelArtifacts = new ArrayList<Artifact>();\r
- List<Artifact> catalogArtifacts = new ArrayList<Artifact>();\r
- ModelArtifactParser modelArtParser = new ModelArtifactParser();\r
-\r
- for (IArtifactInfo artifact : artifacts) {\r
- // Grab the current time so we can measure the download time for the\r
- // metrics log\r
- long startTimeInMs = System.currentTimeMillis();\r
- MdcOverride override = new MdcOverride();\r
- override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));\r
-\r
- // Download Artifact\r
- IDistributionClientDownloadResult downloadResult = client.download(artifact);\r
-\r
- // Generate metrics log\r
- metricsLogger.info(ModelLoaderMsgs.DOWNLOAD_COMPLETE, null, override,\r
- artifact.getArtifactName(), downloadResult.getDistributionActionResult().toString());\r
-\r
- if (downloadResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {\r
- publishDownloadFailure(data, artifact, downloadResult.getDistributionMessageResult());\r
- success = false;\r
- break;\r
- }\r
-\r
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,\r
- "Downloaded artifact: " + artifact.getArtifactName() + " Payload:\n" + new String(downloadResult.getArtifactPayload()));\r
- \r
- publishDownloadSuccess(data, artifact, downloadResult);\r
-\r
- if ((artifact.getArtifactType()\r
- .compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString()) == 0)\r
- || (artifact.getArtifactType()\r
- .compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString()) == 0)) {\r
- List<Artifact> parsedArtifacts = modelArtParser.parse(downloadResult.getArtifactPayload(), downloadResult.getArtifactName());\r
- if (parsedArtifacts != null && !parsedArtifacts.isEmpty()) {\r
- modelArtifacts.addAll(parsedArtifacts);\r
- } else {\r
- success = false;\r
- publishDeployFailure(data, artifact);\r
- break;\r
- }\r
- } else if (artifact.getArtifactType()\r
- .compareToIgnoreCase(ArtifactTypeEnum.VNF_CATALOG.toString()) == 0) {\r
- catalogArtifacts\r
- .add(new VnfCatalogArtifact(new String(downloadResult.getArtifactPayload())));\r
- }\r
- }\r
-\r
- String statusString = "SUCCESS";\r
- if (success) {\r
- ModelArtifactHandler modelHandler = new ModelArtifactHandler(config);\r
- boolean modelDeploySuccess = modelHandler.pushArtifacts(modelArtifacts,\r
- data.getDistributionID());\r
-\r
- VnfCatalogArtifactHandler catalogHandler = new VnfCatalogArtifactHandler(config);\r
- boolean catalogDeploySuccess = catalogHandler.pushArtifacts(catalogArtifacts,\r
- data.getDistributionID());\r
-\r
- for (IArtifactInfo artifact : artifacts) {\r
- if ((artifact.getArtifactType()\r
- .compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString()) == 0)\r
- || (artifact.getArtifactType()\r
- .compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString()) == 0)) {\r
- if (modelDeploySuccess) {\r
- publishDeploySuccess(data, artifact);\r
- } else {\r
- publishDeployFailure(data, artifact);\r
- statusString = "FAILURE";\r
- }\r
- } else if (artifact.getArtifactType()\r
- .compareToIgnoreCase(ArtifactTypeEnum.VNF_CATALOG.toString()) == 0) {\r
- if (catalogDeploySuccess) {\r
- publishDeploySuccess(data, artifact);\r
- } else {\r
- publishDeployFailure(data, artifact);\r
- statusString = "FAILURE";\r
- }\r
- }\r
- }\r
- } else {\r
- statusString = "FAILURE";\r
- }\r
-\r
- auditLogger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,\r
- "Processed distribution " + data.getDistributionID() + " (" + statusString + ")");\r
- MDC.clear();\r
- }\r
-\r
- private List<IArtifactInfo> getArtifacts(INotificationData data) {\r
- List<IArtifactInfo> artifacts = new ArrayList<IArtifactInfo>();\r
- List<IResourceInstance> resources = data.getResources();\r
-\r
- if (data.getServiceArtifacts() != null) {\r
- artifacts.addAll(data.getServiceArtifacts());\r
- }\r
-\r
- if (resources != null) {\r
- for (IResourceInstance resource : resources) {\r
- if (resource.getArtifacts() != null) {\r
- artifacts.addAll(resource.getArtifacts());\r
- }\r
- }\r
- }\r
-\r
- return artifacts;\r
- }\r
-\r
- private void publishDownloadFailure(INotificationData data, IArtifactInfo artifact,\r
- String errorMessage) {\r
- // Grab the current time so we can measure the download time for the metrics\r
- // log\r
- long startTimeInMs = System.currentTimeMillis();\r
- MdcOverride override = new MdcOverride();\r
- override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));\r
-\r
- IDistributionClientResult sendDownloadStatus = client.sendDownloadStatus(\r
- buildStatusMessage(client, data, artifact, DistributionStatusEnum.DOWNLOAD_ERROR));\r
- metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "download failure",\r
- artifact.getArtifactName(), sendDownloadStatus.getDistributionActionResult().toString());\r
-\r
- if (sendDownloadStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {\r
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
- "Failed to publish download failure status: "\r
- + sendDownloadStatus.getDistributionMessageResult());\r
- }\r
-\r
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
- "Failed to download artifact " + artifact.getArtifactName() + ": " + errorMessage);\r
- }\r
-\r
- private void publishDownloadSuccess(INotificationData data, IArtifactInfo artifact,\r
- IDistributionClientDownloadResult downloadResult) {\r
- // Grab the current time so we can measure the download time for the metrics\r
- // log\r
- long startTimeInMs = System.currentTimeMillis();\r
- MdcOverride override = new MdcOverride();\r
- override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));\r
-\r
- IDistributionClientResult sendDownloadStatus = client.sendDownloadStatus(\r
- buildStatusMessage(client, data, artifact, DistributionStatusEnum.DOWNLOAD_OK));\r
- metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "download success",\r
- artifact.getArtifactName(), sendDownloadStatus.getDistributionActionResult().toString());\r
-\r
- if (sendDownloadStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {\r
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
- "Failed to publish download success status: "\r
- + sendDownloadStatus.getDistributionMessageResult());\r
- }\r
-\r
- if (logger.isDebugEnabled()) {\r
- StringBuilder sb = new StringBuilder();\r
- sb.append("Downloaded artifact:\n");\r
- sb.append("ArtInfo_Art_Name: " + artifact.getArtifactName());\r
- sb.append("\nArtInfo_Art_description: " + artifact.getArtifactDescription());\r
- sb.append("\nArtInfo_Art_CheckSum: " + artifact.getArtifactChecksum());\r
- sb.append("\nArtInfo_Art_Url: " + artifact.getArtifactURL());\r
- sb.append("\nArtInfo_Art_Type: " + artifact.getArtifactType());\r
- sb.append("\nArtInfo_Serv_description: " + data.getServiceDescription());\r
- sb.append("\nArtInfo_Serv_Name: " + data.getServiceName());\r
- sb.append("\nGet_serviceVersion: " + data.getServiceVersion());\r
- sb.append("\nGet_Service_UUID: " + data.getServiceUUID());\r
- sb.append("\nArtInfo_DistributionId: " + data.getDistributionID());\r
- logger.debug(sb.toString());\r
- }\r
- }\r
-\r
- private void publishDeployFailure(INotificationData data, IArtifactInfo artifact) {\r
- // Grab the current time so we can measure the download time for the metrics\r
- // log\r
- long startTimeInMs = System.currentTimeMillis();\r
- MdcOverride override = new MdcOverride();\r
- override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));\r
-\r
- IDistributionClientResult sendStatus = client.sendDeploymentStatus(\r
- buildStatusMessage(client, data, artifact, DistributionStatusEnum.DEPLOY_ERROR));\r
- metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "deploy failure",\r
- artifact.getArtifactName(), sendStatus.getDistributionActionResult().toString());\r
-\r
- if (sendStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {\r
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
- "Failed to publish deploy failure status: " + sendStatus.getDistributionMessageResult());\r
- }\r
- }\r
-\r
- private void publishDeploySuccess(INotificationData data, IArtifactInfo artifact) {\r
- // Grab the current time so we can measure the download time for the metrics\r
- // log\r
- long startTimeInMs = System.currentTimeMillis();\r
- MdcOverride override = new MdcOverride();\r
- override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));\r
-\r
- IDistributionClientResult sendStatus = client.sendDownloadStatus(\r
- buildStatusMessage(client, data, artifact, DistributionStatusEnum.DEPLOY_OK));\r
- metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "deploy success",\r
- artifact.getArtifactName(), sendStatus.getDistributionActionResult().toString());\r
-\r
- if (sendStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {\r
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
- "Failed to publish deploy success status: " + sendStatus.getDistributionMessageResult());\r
- }\r
- }\r
-\r
- private IDistributionStatusMessage buildStatusMessage(IDistributionClient client,\r
- INotificationData data, IArtifactInfo artifact, DistributionStatusEnum status) {\r
- IDistributionStatusMessage statusMessage = new DistributionStatusMsg(status,\r
- data.getDistributionID(), client.getConfiguration().getConsumerID(),\r
- artifact.getArtifactURL());\r
-\r
- return statusMessage;\r
- }\r
-\r
-}\r
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.notification;
+
+import org.openecomp.sdc.api.IDistributionClient;
+import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;
+import org.openecomp.sdc.api.consumer.INotificationCallback;
+import org.openecomp.sdc.api.notification.IArtifactInfo;
+import org.openecomp.sdc.api.notification.INotificationData;
+import org.openecomp.sdc.api.notification.IResourceInstance;
+import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;
+import org.openecomp.sdc.api.results.IDistributionClientResult;
+import org.openecomp.sdc.utils.ArtifactTypeEnum;
+import org.openecomp.sdc.utils.DistributionActionResultEnum;
+import org.openecomp.sdc.utils.DistributionStatusEnum;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.cl.mdc.MdcContext;
+import org.openecomp.cl.mdc.MdcOverride;
+import org.openecomp.modelloader.config.ModelLoaderConfig;
+import org.openecomp.modelloader.entity.Artifact;
+import org.openecomp.modelloader.entity.catalog.VnfCatalogArtifact;
+import org.openecomp.modelloader.entity.catalog.VnfCatalogArtifactHandler;
+import org.openecomp.modelloader.entity.model.IModelParser;
+import org.openecomp.modelloader.entity.model.ModelArtifactHandler;
+import org.openecomp.modelloader.entity.model.ModelParserFactory;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+import org.slf4j.MDC;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+public class EventCallback implements INotificationCallback {
+
+ private IDistributionClient client;
+ private ModelLoaderConfig config;
+ private static Logger logger = LoggerFactory.getInstance()
+ .getLogger(EventCallback.class.getName());
+ private static Logger auditLogger = LoggerFactory.getInstance()
+ .getAuditLogger(EventCallback.class.getName());
+ private static Logger metricsLogger = LoggerFactory.getInstance()
+ .getMetricsLogger(EventCallback.class.getName());
+
+ private static SimpleDateFormat dateFormatter = new SimpleDateFormat(
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+
+ public EventCallback(IDistributionClient client, ModelLoaderConfig config) {
+ this.client = client;
+ this.config = config;
+ }
+
+ @Override
+ public void activateCallback(INotificationData data) {
+ // Init MDC
+ MdcContext.initialize(data.getDistributionID(), "ModelLoader", "", "Event-Bus", "");
+
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
+ "Received distribution " + data.getDistributionID());
+
+ boolean success = true;
+ List<IArtifactInfo> artifacts = getArtifacts(data);
+ List<Artifact> modelArtifacts = new ArrayList<Artifact>();
+ List<Artifact> catalogArtifacts = new ArrayList<Artifact>();
+
+ for (IArtifactInfo artifact : artifacts) {
+ // Grab the current time so we can measure the download time for the
+ // metrics log
+ long startTimeInMs = System.currentTimeMillis();
+ MdcOverride override = new MdcOverride();
+ override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));
+
+ // Download Artifact
+ IDistributionClientDownloadResult downloadResult = client.download(artifact);
+
+ // Generate metrics log
+ metricsLogger.info(ModelLoaderMsgs.DOWNLOAD_COMPLETE, null, override,
+ artifact.getArtifactName(), downloadResult.getDistributionActionResult().toString());
+
+ if (downloadResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ publishDownloadFailure(data, artifact, downloadResult.getDistributionMessageResult());
+ success = false;
+ break;
+ }
+
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
+ "Downloaded artifact: " + artifact.getArtifactName() + " Payload:\n" + new String(downloadResult.getArtifactPayload()));
+
+ publishDownloadSuccess(data, artifact, downloadResult);
+
+ if ((artifact.getArtifactType().compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString()) == 0)
+ || (artifact.getArtifactType().compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString()) == 0)) {
+ IModelParser parser = ModelParserFactory.createModelParser(downloadResult.getArtifactPayload(), downloadResult.getArtifactName());
+ List<Artifact> parsedArtifacts = parser.parse(downloadResult.getArtifactPayload(), downloadResult.getArtifactName());
+ if (parsedArtifacts != null && !parsedArtifacts.isEmpty()) {
+ modelArtifacts.addAll(parsedArtifacts);
+ } else {
+ success = false;
+ publishDeployFailure(data, artifact);
+ break;
+ }
+ } else if (artifact.getArtifactType()
+ .compareToIgnoreCase(ArtifactTypeEnum.VNF_CATALOG.toString()) == 0) {
+ catalogArtifacts
+ .add(new VnfCatalogArtifact(new String(downloadResult.getArtifactPayload())));
+ }
+ }
+
+ String statusString = "SUCCESS";
+ if (success) {
+ ModelArtifactHandler modelHandler = new ModelArtifactHandler(config);
+ boolean modelDeploySuccess = modelHandler.pushArtifacts(modelArtifacts,
+ data.getDistributionID());
+
+ VnfCatalogArtifactHandler catalogHandler = new VnfCatalogArtifactHandler(config);
+ boolean catalogDeploySuccess = catalogHandler.pushArtifacts(catalogArtifacts,
+ data.getDistributionID());
+
+ for (IArtifactInfo artifact : artifacts) {
+ if ((artifact.getArtifactType()
+ .compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString()) == 0)
+ || (artifact.getArtifactType()
+ .compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString()) == 0)) {
+ if (modelDeploySuccess) {
+ publishDeploySuccess(data, artifact);
+ } else {
+ publishDeployFailure(data, artifact);
+ statusString = "FAILURE";
+ }
+ } else if (artifact.getArtifactType()
+ .compareToIgnoreCase(ArtifactTypeEnum.VNF_CATALOG.toString()) == 0) {
+ if (catalogDeploySuccess) {
+ publishDeploySuccess(data, artifact);
+ } else {
+ publishDeployFailure(data, artifact);
+ statusString = "FAILURE";
+ }
+ }
+ }
+ } else {
+ statusString = "FAILURE";
+ }
+
+ auditLogger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
+ "Processed distribution " + data.getDistributionID() + " (" + statusString + ")");
+ MDC.clear();
+ }
+
+ private List<IArtifactInfo> getArtifacts(INotificationData data) {
+ List<IArtifactInfo> artifacts = new ArrayList<IArtifactInfo>();
+ List<IResourceInstance> resources = data.getResources();
+
+ if (data.getServiceArtifacts() != null) {
+ artifacts.addAll(data.getServiceArtifacts());
+ }
+
+ if (resources != null) {
+ for (IResourceInstance resource : resources) {
+ if (resource.getArtifacts() != null) {
+ artifacts.addAll(resource.getArtifacts());
+ }
+ }
+ }
+
+ return artifacts;
+ }
+
+ private void publishDownloadFailure(INotificationData data, IArtifactInfo artifact,
+ String errorMessage) {
+ // Grab the current time so we can measure the download time for the metrics
+ // log
+ long startTimeInMs = System.currentTimeMillis();
+ MdcOverride override = new MdcOverride();
+ override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));
+
+ IDistributionClientResult sendDownloadStatus = client.sendDownloadStatus(
+ buildStatusMessage(client, data, artifact, DistributionStatusEnum.DOWNLOAD_ERROR));
+ metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "download failure",
+ artifact.getArtifactName(), sendDownloadStatus.getDistributionActionResult().toString());
+
+ if (sendDownloadStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
+ "Failed to publish download failure status: "
+ + sendDownloadStatus.getDistributionMessageResult());
+ }
+
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
+ "Failed to download artifact " + artifact.getArtifactName() + ": " + errorMessage);
+ }
+
+ private void publishDownloadSuccess(INotificationData data, IArtifactInfo artifact,
+ IDistributionClientDownloadResult downloadResult) {
+ // Grab the current time so we can measure the download time for the metrics
+ // log
+ long startTimeInMs = System.currentTimeMillis();
+ MdcOverride override = new MdcOverride();
+ override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));
+
+ IDistributionClientResult sendDownloadStatus = client.sendDownloadStatus(
+ buildStatusMessage(client, data, artifact, DistributionStatusEnum.DOWNLOAD_OK));
+ metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "download success",
+ artifact.getArtifactName(), sendDownloadStatus.getDistributionActionResult().toString());
+
+ if (sendDownloadStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
+ "Failed to publish download success status: "
+ + sendDownloadStatus.getDistributionMessageResult());
+ }
+
+ if (logger.isDebugEnabled()) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Downloaded artifact:\n");
+ sb.append("ArtInfo_Art_Name: " + artifact.getArtifactName());
+ sb.append("\nArtInfo_Art_description: " + artifact.getArtifactDescription());
+ sb.append("\nArtInfo_Art_CheckSum: " + artifact.getArtifactChecksum());
+ sb.append("\nArtInfo_Art_Url: " + artifact.getArtifactURL());
+ sb.append("\nArtInfo_Art_Type: " + artifact.getArtifactType());
+ sb.append("\nArtInfo_Serv_description: " + data.getServiceDescription());
+ sb.append("\nArtInfo_Serv_Name: " + data.getServiceName());
+ sb.append("\nGet_serviceVersion: " + data.getServiceVersion());
+ sb.append("\nGet_Service_UUID: " + data.getServiceUUID());
+ sb.append("\nArtInfo_DistributionId: " + data.getDistributionID());
+ logger.debug(sb.toString());
+ }
+ }
+
+ private void publishDeployFailure(INotificationData data, IArtifactInfo artifact) {
+ // Grab the current time so we can measure the download time for the metrics
+ // log
+ long startTimeInMs = System.currentTimeMillis();
+ MdcOverride override = new MdcOverride();
+ override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));
+
+ IDistributionClientResult sendStatus = client.sendDeploymentStatus(
+ buildStatusMessage(client, data, artifact, DistributionStatusEnum.DEPLOY_ERROR));
+ metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "deploy failure",
+ artifact.getArtifactName(), sendStatus.getDistributionActionResult().toString());
+
+ if (sendStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
+ "Failed to publish deploy failure status: " + sendStatus.getDistributionMessageResult());
+ }
+ }
+
+ private void publishDeploySuccess(INotificationData data, IArtifactInfo artifact) {
+ // Grab the current time so we can measure the download time for the metrics
+ // log
+ long startTimeInMs = System.currentTimeMillis();
+ MdcOverride override = new MdcOverride();
+ override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));
+
+ IDistributionClientResult sendStatus = client.sendDownloadStatus(
+ buildStatusMessage(client, data, artifact, DistributionStatusEnum.DEPLOY_OK));
+ metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "deploy success",
+ artifact.getArtifactName(), sendStatus.getDistributionActionResult().toString());
+
+ if (sendStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
+ "Failed to publish deploy success status: " + sendStatus.getDistributionMessageResult());
+ }
+ }
+
+ private IDistributionStatusMessage buildStatusMessage(IDistributionClient client,
+ INotificationData data, IArtifactInfo artifact, DistributionStatusEnum status) {
+ IDistributionStatusMessage statusMessage = new DistributionStatusMsg(status,
+ data.getDistributionID(), client.getConfiguration().getConsumerID(),
+ artifact.getArtifactURL());
+
+ return statusMessage;
+ }
+
+}