2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.enrichment.impl.external.artifact;
23 import org.openecomp.core.enrichment.types.ArtifactCategory;
24 import org.openecomp.core.enrichment.types.ComponentMonitoringUploadInfo;
25 import org.openecomp.core.enrichment.types.MonitoringArtifactInfo;
26 import org.openecomp.core.enrichment.types.MonitoringUploadType;
27 import org.openecomp.core.model.dao.EnrichedServiceModelDao;
28 import org.openecomp.core.model.dao.EnrichedServiceModelDaoFactory;
29 import org.openecomp.core.model.types.ServiceArtifact;
30 import org.openecomp.core.utilities.file.FileContentHandler;
31 import org.openecomp.core.utilities.file.FileUtils;
32 import org.openecomp.sdc.common.errors.Messages;
33 import org.openecomp.sdc.datatypes.error.ErrorLevel;
34 import org.openecomp.sdc.datatypes.error.ErrorMessage;
35 import org.openecomp.sdc.enrichment.EnrichmentInfo;
36 import org.openecomp.sdc.enrichment.inter.ExternalArtifactEnricherInterface;
37 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
38 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
39 import org.openecomp.sdc.tosca.services.DataModelUtil;
40 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao;
41 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
42 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
43 import org.openecomp.sdc.vendorsoftwareproduct.dao.MonitoringUploadDaoFactory;
44 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
45 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity;
46 import org.openecomp.sdc.versioning.dao.types.Version;
49 import java.io.IOException;
50 import java.util.Collection;
51 import java.util.HashMap;
52 import java.util.List;
54 import java.util.Optional;
57 public class MonitoringMibEnricher implements ExternalArtifactEnricherInterface {
59 private EnrichedServiceModelDao enrichedServiceModelDao;
60 private ComponentDao componentDao;
61 private ComponentArtifactDao componentArtifactDao;
62 private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
67 * @param enrichmentInfo the enrichmentInfo
70 public Map<String, List<ErrorMessage>> enrich(EnrichmentInfo enrichmentInfo) {
72 Map<String, List<ErrorMessage>> errors = new HashMap<>();
73 String vspId = enrichmentInfo.getKey();
74 Version version = enrichmentInfo.getVersion();
76 Collection<ComponentEntity> components =
77 getComponentDao().list(new ComponentEntity(vspId, version, null));
79 .forEach(componentEntry -> errors.putAll(enrichComponent(componentEntry, vspId, version)));
84 Map<String, List<ErrorMessage>> enrichComponent(ComponentEntity componentEntry, String vspId,
88 mdcDataDebugMessage.debugEntryMessage(null, null);
90 Map<String, List<ErrorMessage>> errors = new HashMap<>();
91 ComponentMonitoringUploadInfo componentMonitoringUploadInfo =
92 extractComponentMibInfo(componentEntry, vspId, version, errors);
93 enrichComponentMib(componentMonitoringUploadInfo, vspId, version, errors);
95 mdcDataDebugMessage.debugExitMessage(null, null);
99 private ComponentMonitoringUploadInfo extractComponentMibInfo(ComponentEntity componentEntity,
102 Map<String, List<ErrorMessage>> errors) {
105 mdcDataDebugMessage.debugEntryMessage(null, null);
107 String componentId = componentEntity.getId();
108 ComponentMonitoringUploadEntity entity = new ComponentMonitoringUploadEntity();
110 entity.setVspId(vspId);
111 entity.setVersion(version);
112 entity.setComponentId(componentId);
113 String componentName = componentEntity.getComponentCompositionData().getName();
114 ComponentMonitoringUploadInfo componentMonitoringUploadInfo =
115 new ComponentMonitoringUploadInfo();
116 for (MonitoringUploadType monitoringUploadType : MonitoringUploadType.values()) {
117 updComponentMibInfoByType(componentName, monitoringUploadType, entity,
118 componentMonitoringUploadInfo,
121 // updComponentMibInfoByType(componentName, MonitoringUploadType.SNMP_POLL, entity,
122 // componentMonitoringUploadInfo,
124 // updComponentMibInfoByType(componentName, MonitoringUploadType.SNMP_TRAP, entity,
125 // componentMonitoringUploadInfo,
128 mdcDataDebugMessage.debugExitMessage(null, null);
129 return componentMonitoringUploadInfo;
132 private void updComponentMibInfoByType(String componentName, MonitoringUploadType type,
133 ComponentMonitoringUploadEntity componentMonitoringUploadEntity,
134 ComponentMonitoringUploadInfo componentMonitoringUploadInfo,
135 Map<String, List<ErrorMessage>> errors) {
138 mdcDataDebugMessage.debugEntryMessage(null, null);
141 componentMonitoringUploadEntity.setType(type);
142 Optional<ComponentMonitoringUploadEntity> artifact =
143 getComponentArtifactDao().getByType(componentMonitoringUploadEntity);
145 if (!artifact.isPresent()) {
148 String unifiedComponentNodeType =
149 ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + DataModelUtil.getNamespaceSuffix(componentName);
150 path = unifiedComponentNodeType + File.separator + ArtifactCategory.DEPLOYMENT.getDisplayName()
151 + File.separator + type.name();
152 MonitoringArtifactInfo monitoringArtifactInfo = new MonitoringArtifactInfo();
153 monitoringArtifactInfo.setName(path);
154 monitoringArtifactInfo.setContent(artifact.get().getArtifact().array());
155 switch (type) { //todo as part of ATTASDC-4503
157 componentMonitoringUploadInfo.setSnmpPoll(monitoringArtifactInfo);
160 componentMonitoringUploadInfo.setSnmpTrap(monitoringArtifactInfo);
163 componentMonitoringUploadInfo.setVesEvent(monitoringArtifactInfo);
169 mdcDataDebugMessage.debugExitMessage(null, null);
172 private void enrichComponentMib(ComponentMonitoringUploadInfo componentMonitoringUploadInfo,
175 Map<String, List<ErrorMessage>> errors) {
178 mdcDataDebugMessage.debugEntryMessage(null, null);
180 ServiceArtifact mibServiceArtifact = new ServiceArtifact();
181 mibServiceArtifact.setVspId(vspId);
182 mibServiceArtifact.setVersion(version);
183 enrichMibFiles(mibServiceArtifact, componentMonitoringUploadInfo, errors);
185 mdcDataDebugMessage.debugExitMessage(null, null);
188 private void enrichMibFiles(ServiceArtifact monitoringArtifact,
189 ComponentMonitoringUploadInfo componentMonitoringUploadInfo,
190 Map<String, List<ErrorMessage>> errors) {
193 mdcDataDebugMessage.debugEntryMessage(null, null);
195 if (componentMonitoringUploadInfo == null) {
198 //todo fix as part of ATTASDC-4503
199 enrichMibByType(componentMonitoringUploadInfo.getSnmpTrap(), MonitoringUploadType.SNMP_TRAP,
202 enrichMibByType(componentMonitoringUploadInfo.getSnmpPoll(), MonitoringUploadType.SNMP_POLL,
205 enrichMibByType(componentMonitoringUploadInfo.getVesEvent(), MonitoringUploadType.VES_EVENTS,
209 mdcDataDebugMessage.debugExitMessage(null, null);
212 private void enrichMibByType(MonitoringArtifactInfo monitoringArtifactInfo,
213 MonitoringUploadType type,
214 ServiceArtifact mibServiceArtifact,
215 Map<String, List<ErrorMessage>> errors) {
218 mdcDataDebugMessage.debugEntryMessage(null, null);
220 if (monitoringArtifactInfo == null) {
223 FileContentHandler mibs;
226 .getFileContentMapFromZip(FileUtils.toByteArray(monitoringArtifactInfo.getContent()));
227 } catch (IOException ioException) {
228 ErrorMessage.ErrorMessageUtil
229 .addMessage(mibServiceArtifact.getName() + "." + type.name(), errors)
230 .add(new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_ZIP_FILE.getErrorMessage()));
233 Set<String> fileList = mibs.getFileList();
234 for (String fileName : fileList) {
235 mibServiceArtifact.setContentData(FileUtils.toByteArray(mibs.getFileContent(fileName)));
236 mibServiceArtifact.setName(monitoringArtifactInfo.getName() + File.separator + fileName);
237 getEnrichedServiceModelDao().storeExternalArtifact(mibServiceArtifact);
240 mdcDataDebugMessage.debugExitMessage(null, null);
243 private EnrichedServiceModelDao getEnrichedServiceModelDao() {
244 if (enrichedServiceModelDao == null) {
245 enrichedServiceModelDao = EnrichedServiceModelDaoFactory.getInstance().createInterface();
247 return enrichedServiceModelDao;
250 private ComponentDao getComponentDao() {
251 if (componentDao == null) {
252 componentDao = ComponentDaoFactory.getInstance().createInterface();
257 private ComponentArtifactDao getComponentArtifactDao() {
258 if (componentArtifactDao == null) {
259 componentArtifactDao = MonitoringUploadDaoFactory.getInstance().createInterface();
261 return componentArtifactDao;