package org.openecomp.sdc.asdctool.impl.migration.v1707;
import java.util.EnumMap;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.stream.Collectors;
-import org.apache.commons.collections.MapUtils;
-import org.openecomp.sdc.asdctool.impl.migration.Migration;
+import org.apache.commons.collections.CollectionUtils;
+import org.openecomp.sdc.asdctool.impl.migration.Migration1707Task;
import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
import fj.data.Either;
@Component("toscaTemplateRegeneration")
-public class ToscaTemplateRegeneration implements Migration {
+public class ToscaTemplateRegeneration implements Migration1707Task {
private static Logger LOGGER = LoggerFactory.getLogger(ToscaTemplateRegeneration.class);
@Override
public boolean migrate() {
boolean result = true;
- Either<Map<GraphVertex, org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getAllCertifiedComponentsRes;
+ Either<List<GraphVertex>, StorageOperationStatus> getAllCertifiedComponentsRes;
try{
getAllCertifiedComponentsRes = getAllCertifiedComponents();
if(getAllCertifiedComponentsRes.isRight()){
result = false;
}
- if(result && MapUtils.isNotEmpty(getAllCertifiedComponentsRes.left().value())){
+ if(result && CollectionUtils.isNotEmpty(getAllCertifiedComponentsRes.left().value())){
result = regenerateToscaTemplateArtifacts(getAllCertifiedComponentsRes.left().value());
}
} catch(Exception e){
return result;
}
- private boolean regenerateToscaTemplateArtifacts(Map<GraphVertex, org.openecomp.sdc.be.model.Component> components) {
+ private boolean regenerateToscaTemplateArtifacts(List<GraphVertex> components) {
boolean result = true;
-
- Map<GraphVertex, org.openecomp.sdc.be.model.Component> filteredComponents = components.entrySet()
- .stream()
- .filter(e -> e.getValue().getToscaArtifacts()!=null && e.getValue().getToscaArtifacts().containsKey(ToscaExportHandler.ASSET_TOSCA_TEMPLATE))
- .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
-
- for(Entry<GraphVertex, org.openecomp.sdc.be.model.Component> currComponent : filteredComponents.entrySet()){
- result = regenerateToscaTemplateArtifact(currComponent);
- if(!result){
+ for(GraphVertex componentV : components){
+ Either<org.openecomp.sdc.be.model.Component, StorageOperationStatus> getComponentsRes = toscaOperationFacade.getToscaElement(componentV);
+ if (getComponentsRes.isRight()) {
+ result = false;
+ break;
+ }
+ if(getComponentsRes.left().value().getToscaArtifacts()!=null && getComponentsRes.left().value().getToscaArtifacts().containsKey(ToscaExportHandler.ASSET_TOSCA_TEMPLATE)){
+ result = regenerateToscaTemplateArtifact(getComponentsRes.left().value(), componentV);
+ }
+ if(result){
+ toscaOperationFacade.commit();
+ } else {
+ toscaOperationFacade.rollback();
break;
}
}
}
@SuppressWarnings("unchecked")
- private boolean regenerateToscaTemplateArtifact(Map.Entry<GraphVertex, org.openecomp.sdc.be.model.Component> parent) {
+ private boolean regenerateToscaTemplateArtifact(org.openecomp.sdc.be.model.Component parent, GraphVertex parentV) {
boolean result = true;
Either<GraphVertex, TitanOperationStatus> toscaDataVertexRes = null;
ArtifactDataDefinition data = null;
LOGGER.debug("tosca artifact generation");
- Either<ToscaRepresentation, ToscaError> exportComponent = toscaExportUtils.exportComponent(parent.getValue());
+ Either<ToscaRepresentation, ToscaError> exportComponent = toscaExportUtils.exportComponent(parent);
if (exportComponent.isRight()) {
- LOGGER.debug("Failed export tosca yaml for component {} error {}", parent.getValue().getUniqueId(), exportComponent.right().value());
+ LOGGER.debug("Failed export tosca yaml for component {} error {}", parent.getUniqueId(), exportComponent.right().value());
result = false;
}
if(result){
- LOGGER.debug("Tosca yaml exported for component {} ", parent.getValue().getUniqueId());
- toscaDataVertexRes = toscaOperationFacade.getTitanDao().getChildVertex(parent.getKey(), EdgeLabelEnum.TOSCA_ARTIFACTS, JsonParseFlagEnum.ParseJson);
+ LOGGER.debug("Tosca yaml exported for component {} ", parent.getUniqueId());
+ toscaDataVertexRes = toscaOperationFacade.getTitanDao().getChildVertex(parentV, EdgeLabelEnum.TOSCA_ARTIFACTS, JsonParseFlagEnum.ParseJson);
if(toscaDataVertexRes.isRight()){
- LOGGER.debug("Failed to fetch tosca data vertex {} for component {}. Status is {}", EdgeLabelEnum.TOSCA_ARTIFACTS, parent.getValue().getUniqueId(), exportComponent.right().value());
+ LOGGER.debug("Failed to fetch tosca data vertex {} for component {}. Status is {}", EdgeLabelEnum.TOSCA_ARTIFACTS, parent.getUniqueId(), exportComponent.right().value());
result = false;
}
}
if(result){
- data = parent.getValue().getToscaArtifacts().get(ToscaExportHandler.ASSET_TOSCA_TEMPLATE);
+ data = parent.getToscaArtifacts().get(ToscaExportHandler.ASSET_TOSCA_TEMPLATE);
data.setArtifactChecksum(GeneralUtility.calculateMD5ByByteArray(exportComponent.left().value().getMainYaml().getBytes()));
((Map<String, ArtifactDataDefinition>) toscaDataVertexRes.left().value().getJson()).put(ToscaExportHandler.ASSET_TOSCA_TEMPLATE, data);
return result;
}
- public Either<Map<GraphVertex, org.openecomp.sdc.be.model.Component>, StorageOperationStatus> getAllCertifiedComponents() {
+ public Either<List<GraphVertex>, StorageOperationStatus> getAllCertifiedComponents() {
- Map<GraphVertex, org.openecomp.sdc.be.model.Component> components = new HashMap<>();
Map<GraphPropertyEnum, Object> propertiesToMatch = new EnumMap<>(GraphPropertyEnum.class);
propertiesToMatch.put(GraphPropertyEnum.STATE, LifecycleStateEnum.CERTIFIED.name());
- Either<List<GraphVertex>, TitanOperationStatus> getVerticiesRes = toscaOperationFacade.getTitanDao().getByCriteria(null, propertiesToMatch,JsonParseFlagEnum.ParseAll);
+ List<GraphVertex> components = null;
+ Either<List<GraphVertex>, TitanOperationStatus> getVerticiesRes = toscaOperationFacade.getTitanDao().getByCriteria(null, propertiesToMatch,JsonParseFlagEnum.ParseMetadata);
if (getVerticiesRes.isRight() && getVerticiesRes.right().value() != TitanOperationStatus.NOT_FOUND) {
LOGGER.debug("Failed to fetch all certified components. Status is {}", getVerticiesRes.right().value());
return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getVerticiesRes.right().value()));
}
if(getVerticiesRes.isLeft()){
- List<GraphVertex> componentVerticies = getVerticiesRes.left().value();
- for (GraphVertex componentV : componentVerticies) {
- Either<org.openecomp.sdc.be.model.Component, StorageOperationStatus> getComponentsRes = toscaOperationFacade.getToscaElement(componentV);
- if (getComponentsRes.isRight()) {
- return Either.right(getComponentsRes.right().value());
- }
- components.put(componentV, getComponentsRes.left().value());
- }
+ components = getVerticiesRes.left().value();
}
return Either.left(components);
}