diff options
author | Avi Ziv <avi.ziv@amdocs.com> | 2017-07-18 19:45:38 +0300 |
---|---|---|
committer | Avi Ziv <avi.ziv@amdocs.com> | 2017-07-18 19:45:38 +0300 |
commit | b8e2faf476202b6ffe61bc3a9a37df1304881d40 (patch) | |
tree | f78b8c0517d8e16c5ae610bf8b49f68ea8a312a1 /openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl | |
parent | 75aacbbe1acf78fa53378f07f0a8c7769449a17e (diff) |
[SDC] Onboarding 1710 rebase.
Change-Id: If3b6b81d221fde13908f1e8160db6f7d9433c535
Signed-off-by: Avi Ziv <avi.ziv@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl')
18 files changed, 1326 insertions, 67 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java new file mode 100644 index 0000000000..ba878c661e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java @@ -0,0 +1,120 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.UDTValue; +import com.datastax.driver.mapping.Mapper; +import com.datastax.driver.mapping.Result; +import com.datastax.driver.mapping.UDTMapper; +import com.datastax.driver.mapping.annotations.Accessor; +import com.datastax.driver.mapping.annotations.Query; +import org.openecomp.core.dao.impl.CassandraBaseDao; +import org.openecomp.core.nosqldb.api.NoSqlDb; +import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity; +import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.types.UniqueValueMetadata; +import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; + +public class ComputeDaoCassandraImpl extends CassandraBaseDao<ComputeEntity> implements + ComputeDao { + + private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); + private static final Mapper<ComputeEntity> mapper = + noSqlDb.getMappingManager().mapper(ComputeEntity.class); + private static final ComputeAccessor accessor = + noSqlDb.getMappingManager().createAccessor(ComputeDaoCassandraImpl.ComputeAccessor.class); + private static final UDTMapper<Version> versionMapper = + noSqlDb.getMappingManager().udtMapper(Version.class); + + @Override + public void registerVersioning(String versionableEntityType) { + VersionableEntityMetadata metadata = new VersionableEntityMetadata( + mapper.getTableMetadata().getName(), + mapper.getTableMetadata().getPartitionKey().get(0).getName(), + mapper.getTableMetadata().getPartitionKey().get(1).getName()); + + + metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata( + VendorSoftwareProductConstants.UniqueValues.COMPUTE_NAME, + Arrays.asList("vsp_id", "version", "component_id", "name")))); + + VersioningManagerFactory.getInstance().createInterface() + .register(versionableEntityType, metadata); + } + + @Override + public Collection<ComputeEntity> list(ComputeEntity entity) { + return accessor.listByComponentId(entity.getVspId(), + versionMapper.toUDT(entity.getVersion()), entity.getComponentId()).all(); + } + + @Override + protected Mapper<ComputeEntity> getMapper() { + return mapper; + } + + @Override + protected Object[] getKeys(ComputeEntity entity) { + return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getComponentId(), entity.getId()}; + } + + @Override + public Collection<ComputeEntity> listByVsp(String vspId, Version version) { + return accessor.listByVspId(vspId, versionMapper.toUDT(version)).all(); + } + + @Override + public void update(ComputeEntity entity) { + accessor.updateCompositionData(entity.getCompositionData(), entity.getVspId(), versionMapper + .toUDT(entity.getVersion()), entity.getComponentId(), entity.getId()); + } + + @Override + public void updateQuestionnaireData(String vspId, Version version, String componentId, + String computeId, String questionnaireData) { + accessor.updateQuestionnaireData(questionnaireData, vspId, versionMapper.toUDT(version), + componentId, computeId); + } + + @Override + public void deleteAll(String vspId, Version version) { + accessor.deleteAll(vspId, version); + } + + @Override + public ComputeEntity getQuestionnaireData(String vspId, Version version, String componentId, + String computeId) { + return null; + } + + @Accessor + interface ComputeAccessor { + + @Query("select * from vsp_component_compute where vsp_id=? and version=? and component_id=?") + Result<ComputeEntity> listByComponentId(String vspId, UDTValue version, String componentId); + + @Query("select * from vsp_component_compute where vsp_id=? and version=?") + Result<ComputeEntity> listByVspId(String vspId, UDTValue version); + + @Query("update vsp_component_compute set composition_data=? where vsp_id=? and version=?" + + " and component_id=? and compute_id=?") + ResultSet updateCompositionData(String compositionData, String vspId, UDTValue version, + String componentId, String computeId); + + @Query("update vsp_component_compute set questionnaire_data=? where vsp_id=? and version=?" + + " and component_id=? and compute_id=?") + ResultSet updateQuestionnaireData(String questionnaireData, String vspId, UDTValue version, + String componentId, String computeId); + + @Query("delete from vsp_component_compute where vsp_id=? and version=?") + ResultSet deleteAll(String vspId, Version version); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoFactoryImpl.java new file mode 100644 index 0000000000..8221de3152 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoFactoryImpl.java @@ -0,0 +1,16 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; + +import org.openecomp.core.zusammen.api.ZusammenAdaptorFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.ComputeDaoZusammenImpl; + +public class ComputeDaoFactoryImpl extends ComputeDaoFactory { + private static final ComputeDao INSTANCE = new ComputeDaoZusammenImpl( + ZusammenAdaptorFactory.getInstance().createInterface()); + + @Override + public ComputeDao createInterface() { + return INSTANCE; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java new file mode 100644 index 0000000000..5831b582fc --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java @@ -0,0 +1,93 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.UDTValue; +import com.datastax.driver.mapping.Mapper; +import com.datastax.driver.mapping.Result; +import com.datastax.driver.mapping.UDTMapper; +import com.datastax.driver.mapping.annotations.Accessor; +import com.datastax.driver.mapping.annotations.Query; +import org.openecomp.core.dao.impl.CassandraBaseDao; +import org.openecomp.core.nosqldb.api.NoSqlDb; +import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; +import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; +import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.types.UniqueValueMetadata; +import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; + + +public class DeploymentFlavorDaoCassandraImpl extends CassandraBaseDao<DeploymentFlavorEntity> implements DeploymentFlavorDao { + private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); + private static final Mapper<DeploymentFlavorEntity> mapper = noSqlDb.getMappingManager().mapper(DeploymentFlavorEntity.class); + private static final DeploymentFlavorAccessor accessor = + noSqlDb.getMappingManager().createAccessor(DeploymentFlavorAccessor.class); + private static final UDTMapper<Version> versionMapper = + noSqlDb.getMappingManager().udtMapper(Version.class); + @Override + protected Mapper<DeploymentFlavorEntity> getMapper() { + return mapper; + } + + @Override + protected Object[] getKeys(DeploymentFlavorEntity entity) { + return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getId()}; + } + + @Override + public Collection<DeploymentFlavorEntity> list(DeploymentFlavorEntity entity) { + return accessor.list(entity.getVspId(), versionMapper.toUDT(entity.getVersion())).all(); + } + + @Override + public void update(DeploymentFlavorEntity entity) { + accessor.updateCompositionData(entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getId(), entity.getCompositionData()); + } + + @Override + public void registerVersioning(String versionableEntityType) { + VersionableEntityMetadata metadata = new VersionableEntityMetadata( + mapper.getTableMetadata().getName(), + mapper.getTableMetadata().getPartitionKey().get(0).getName(), + mapper.getTableMetadata().getPartitionKey().get(1).getName()); + + + metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata( + VendorSoftwareProductConstants.UniqueValues.DEPLOYMENT_FLAVOR_NAME, + Arrays.asList(mapper.getTableMetadata().getPartitionKey().get(0).getName(), + mapper.getTableMetadata().getPartitionKey().get(1).getName(), "name")))); + + VersioningManagerFactory.getInstance().createInterface() + .register(versionableEntityType, metadata); + } + + @Override + public void deleteAll(String vspId, Version version) { + accessor.deleteAll(vspId, version); + } + + @Accessor + interface DeploymentFlavorAccessor { + @Query( + "select vsp_id, version, deployment_flavor_id, composition_data from vsp_deployment_flavor where vsp_id=?" + + " and version=?") + Result<DeploymentFlavorEntity> list(String vspId, UDTValue version); + + @Query( + "insert into vsp_deployment_flavor (vsp_id, version, deployment_flavor_id, composition_data) values (?,?,?,?)") + ResultSet updateCompositionData(String vspId, UDTValue version, String id, + String compositionData); + + @Query("delete from vsp_deployment_flavor where vsp_id=? and version=?") + ResultSet deleteAll(String vspId, Version version); + + } +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoFactoryImpl.java new file mode 100644 index 0000000000..60a9e5e13e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoFactoryImpl.java @@ -0,0 +1,17 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; + +import org.openecomp.core.zusammen.api.ZusammenAdaptorFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.DeploymentFlavorDaoZusammenImpl; + + +public class DeploymentFlavorDaoFactoryImpl extends DeploymentFlavorDaoFactory{ + private static final DeploymentFlavorDao INSTANCE = new DeploymentFlavorDaoZusammenImpl( + ZusammenAdaptorFactory.getInstance().createInterface()); + + @Override + public DeploymentFlavorDao createInterface() { + return INSTANCE; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoFactoryImpl.java new file mode 100644 index 0000000000..e4f13b3ee1 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoFactoryImpl.java @@ -0,0 +1,18 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; + +import org.openecomp.core.zusammen.api.ZusammenAdaptorFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.ImageDaoZusammenImpl; + +public class ImageDaoFactoryImpl extends ImageDaoFactory { + + private static final ImageDao INSTANCE = new ImageDaoZusammenImpl( + ZusammenAdaptorFactory.getInstance().createInterface()); + + @Override + public ImageDao createInterface() { + return INSTANCE; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java new file mode 100644 index 0000000000..24217830e4 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java @@ -0,0 +1,129 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.UDTValue; +import com.datastax.driver.mapping.Mapper; +import com.datastax.driver.mapping.Result; +import com.datastax.driver.mapping.UDTMapper; +import com.datastax.driver.mapping.annotations.Accessor; +import com.datastax.driver.mapping.annotations.Query; +import org.openecomp.core.dao.impl.CassandraBaseDao; +import org.openecomp.core.nosqldb.api.NoSqlDb; +import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; +import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.types.UniqueValueMetadata; +import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; + +public class ImageDaoImpl extends CassandraBaseDao<ImageEntity> implements ImageDao { + + private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); + private static final Mapper<ImageEntity> mapper = + noSqlDb.getMappingManager().mapper(ImageEntity.class); + private static final ImageAccessor accessor = + noSqlDb.getMappingManager().createAccessor(ImageAccessor.class); + private static final UDTMapper<Version> versionMapper = + noSqlDb.getMappingManager().udtMapper(Version.class); + + @Override + public void registerVersioning(String versionableEntityType) { + + VersionableEntityMetadata metadata = new VersionableEntityMetadata( + mapper.getTableMetadata().getName(), + mapper.getTableMetadata().getPartitionKey().get(0).getName(), + mapper.getTableMetadata().getPartitionKey().get(1).getName()); + + + metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata( + VendorSoftwareProductConstants.UniqueValues.IMAGE_NAME, + Arrays.asList("vsp_id", "version", "component_id", "name")))); + + VersioningManagerFactory.getInstance().createInterface() + .register(versionableEntityType, metadata); + } + + @Override + protected Mapper<ImageEntity> getMapper() { + return mapper; + } + + @Override + protected Object[] getKeys(ImageEntity entity) { + return new Object[]{entity.getVspId(), + versionMapper.toUDT(entity.getVersion()), entity.getComponentId(), entity.getId() }; + } + + @Override + public Collection<ImageEntity> list(ImageEntity entity) { + return accessor.list(entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getComponentId()).all(); + } + + @Override + public void update(ImageEntity entity) { + accessor.updateCompositionData(entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getComponentId(), entity.getId(), entity.getCompositionData()); + } + + @Override + public void updateQuestionnaireData(String vspId, Version version, String componentId, + String imageId, String questionnaireData) { + accessor.updateQuestionnaireData(questionnaireData, vspId, versionMapper.toUDT(version), + componentId, imageId); + } + + @Override + public void delete(ImageEntity entity) { + super.delete(entity); + } + + @Override + public void deleteByVspId(String vspId, Version version) { + accessor.deleteByVspId(vspId, versionMapper.toUDT(version)); + } + + @Override + public Collection<ImageEntity> listByVsp(String vspId, Version version) { + return accessor.listByVspId(vspId, versionMapper.toUDT(version)).all(); + } + + @Override + public ImageEntity getQuestionnaireData(String vspId, Version version, String componentId, + String computeId) { + return null; + } + + @Accessor + interface ImageAccessor { + + @Query("select vsp_id, version, component_id, image_id, composition_data from " + + "vsp_component_image where vsp_id=? and version=? and component_id=?") + Result<ImageEntity> list(String vspId, UDTValue version, String componentId); + + @Query( + "insert into vsp_component_image (vsp_id, version, component_id, image_id, " + + "composition_data) values (?,?,?,?,?)") + ResultSet updateCompositionData(String vspId, UDTValue version, String componentId, String id, + String compositionData); + + @Query("update vsp_component_image set questionnaire_data=? where vsp_id=? and version=?" + + " and component_id=? and image_id=?") + ResultSet updateQuestionnaireData(String questionnaireData, String vspId, UDTValue version, + String componentId, String computeId); + + @Query("delete from vsp_component_image where vsp_id=? and version=?") + ResultSet deleteByVspId(String vspId, UDTValue version); + + @Query("select * from vsp_component_image where vsp_id=? and version=?") + Result<ImageEntity> listByVspId(String vspId, UDTValue version); + + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/MibDaoFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/MonitoringUploadDaoFactoryImpl.java index 923744bae7..fa6a0cbfc2 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/MibDaoFactoryImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/MonitoringUploadDaoFactoryImpl.java @@ -21,16 +21,16 @@ package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; import org.openecomp.core.zusammen.api.ZusammenAdaptorFactory; -import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDaoFactory; -import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.MibDaoZusammenImpl; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.MonitoringUploadDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.ComponentArtifactDaoZusammenImpl; -public class MibDaoFactoryImpl extends MibDaoFactory { - private static final MibDao INSTANCE = new MibDaoZusammenImpl( +public class MonitoringUploadDaoFactoryImpl extends MonitoringUploadDaoFactory { + private static final ComponentArtifactDao INSTANCE = new ComponentArtifactDaoZusammenImpl( ZusammenAdaptorFactory.getInstance().createInterface()); @Override - public MibDao createInterface() { + public ComponentArtifactDao createInterface() { return INSTANCE; } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductDaoImpl.java index 2251c2700e..bdd6677738 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductDaoImpl.java @@ -35,8 +35,12 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDaoFactory; -import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao; @@ -52,6 +56,9 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity; import org.openecomp.sdc.versioning.dao.types.Version; @@ -73,8 +80,6 @@ public class VendorSoftwareProductDaoImpl implements VendorSoftwareProductDao { ComponentDaoFactory.getInstance().createInterface(); private static final NicDao nicDao = NicDaoFactory.getInstance().createInterface(); private static final ProcessDao processDao = ProcessDaoFactory.getInstance().createInterface(); - private static final MibDao - MIB_DAO = MibDaoFactory.getInstance().createInterface(); private static final ServiceArtifactDaoInter artifactDao = ServiceArtifactDaoFactory.getInstance().createInterface(); public static final ServiceTemplateDaoInter @@ -87,6 +92,11 @@ public class VendorSoftwareProductDaoImpl implements VendorSoftwareProductDao { ServiceModelDaoFactory.getInstance().createInterface(); private static final ComponentDependencyModelDao componentDependencyModelDao = ComponentDependencyModelDaoFactory.getInstance().createInterface(); + private static final DeploymentFlavorDao + deploymentFlavorDao = DeploymentFlavorDaoFactory.getInstance().createInterface(); + private static final ImageDao imageDao = ImageDaoFactory.getInstance().createInterface(); + private static final ComputeDao computeDao = ComputeDaoFactory.getInstance().createInterface(); + @Override public void registerVersioning(String versionableEntityType) { @@ -97,6 +107,9 @@ public class VendorSoftwareProductDaoImpl implements VendorSoftwareProductDao { processDao.registerVersioning(versionableEntityType); orchestrationTemplateCandidateDataDao.registerVersioning(versionableEntityType); componentDependencyModelDao.registerVersioning(versionableEntityType); + computeDao.registerVersioning(versionableEntityType); + deploymentFlavorDao.registerVersioning(versionableEntityType); + imageDao.registerVersioning(versionableEntityType); } @Override @@ -226,4 +239,106 @@ public class VendorSoftwareProductDaoImpl implements VendorSoftwareProductDao { return componentDependencyModelDao.list(new ComponentDependencyModelEntity(vspId, version, null)); } + + @Override + public void createDeploymentFlavor(DeploymentFlavorEntity deploymentFlavor) { + deploymentFlavorDao.create(deploymentFlavor); + } + + @Override + public Collection<DeploymentFlavorEntity> listDeploymentFlavors(String vspId, Version version) { + return deploymentFlavorDao.list(new DeploymentFlavorEntity(vspId, version, null)); + } + + @Override + public DeploymentFlavorEntity getDeploymentFlavor(String vspId, Version version, + String deploymentFlavorId) { + return deploymentFlavorDao.get(new DeploymentFlavorEntity(vspId, version, deploymentFlavorId)); + } + + @Override + public void deleteDeploymentFlavor(String vspId, Version version, String deploymentFlavorId) { + deploymentFlavorDao.delete(new DeploymentFlavorEntity(vspId,version, + deploymentFlavorId)); + } + + @Override + public void createImage(ImageEntity imageEntity) { + imageDao.create(imageEntity); + } + + @Override + public Collection<ImageEntity> listImages(String vspId, Version version, String componentId) { + return imageDao.list(new ImageEntity(vspId, version, componentId, null)); + } + + @Override + public ImageEntity getImage(String vspId, Version version, String componentId, String imageId) { + return imageDao.get(new ImageEntity(vspId, version, componentId, imageId)); + } + + @Override + public Collection<ImageEntity> listImagesByVsp(String vspId, Version version) { + return imageDao.listByVsp(vspId, version); + } + + @Override + public void createCompute(ComputeEntity computeEntity) { + computeDao.create(computeEntity); + } + + @Override + public Collection<ComputeEntity> listComputes(String vspId, Version version, String componentId) { + return computeDao.list(new ComputeEntity(vspId, version, componentId, null)); + } + + @Override + public Collection<ComputeEntity> listComputesByVsp(String vspId, Version version) { + return computeDao.listByVsp(vspId, version); + } + + @Override + public ComputeEntity getCompute(String vspId, Version version, String componentId, + String computeFlavorId) { + return computeDao.get(new ComputeEntity(vspId, version, componentId, computeFlavorId)); + } + + @Override + public void deleteImage(String vspId, Version version, String componentId, String imageId) { + ImageEntity imageEntity = new ImageEntity(vspId, version, componentId, imageId); + imageDao.delete(imageEntity); + } + + @Override + public void updateDeploymentFlavor(DeploymentFlavorEntity deploymentFlavorEntity) { + deploymentFlavorDao.update(deploymentFlavorEntity); + } + + @Override + public void updateImage(ImageEntity imageEntity) { + imageDao.update(imageEntity); + } + + @Override + public void updateImageQuestionnaire(String vspId, Version version, String componentId, + String imageId, String questionnaireData) { + imageDao.updateQuestionnaireData(vspId, version, componentId, imageId, questionnaireData); + } + + @Override + public void updateComputeQuestionnaire(String vspId, Version version, String componentId, + String computeId, String questionnaireData) { + computeDao.updateQuestionnaireData(vspId, version, componentId, computeId, questionnaireData); + } + + @Override + public void updateCompute(ComputeEntity compute) { + computeDao.update(compute); + } + + @Override + public void deleteCompute(String vspId, Version version, String componentId, String + computeFlavorId) { + computeDao.delete(new ComputeEntity(vspId, version, componentId, computeFlavorId)); + } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductInfoDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductInfoDaoImpl.java index 5a8635cf98..d9b629cc60 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductInfoDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/VendorSoftwareProductInfoDaoImpl.java @@ -98,6 +98,11 @@ public class VendorSoftwareProductInfoDaoImpl extends CassandraBaseDao<VspDetail } + @Override + public boolean isManual(String vspId, Version version) { + return false; + } + @Accessor interface VendorSoftwareProductInfoAccessor { diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/MibDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentArtifactDaoZusammenImpl.java index d56db41cee..517f2fd19b 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/MibDaoZusammenImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentArtifactDaoZusammenImpl.java @@ -7,12 +7,12 @@ import com.amdocs.zusammen.datatypes.Id; import com.amdocs.zusammen.datatypes.SessionContext; import com.amdocs.zusammen.datatypes.item.Action; import com.amdocs.zusammen.datatypes.item.ElementContext; -import org.openecomp.core.enrichment.types.ArtifactType; +import org.openecomp.core.enrichment.types.MonitoringUploadType; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.zusammen.api.ZusammenAdaptor; import org.openecomp.core.zusammen.api.ZusammenUtil; -import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.MibEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentArtifactDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentMonitoringUploadEntity; import org.openecomp.sdc.versioning.dao.types.Version; import java.io.ByteArrayInputStream; @@ -25,13 +25,13 @@ import java.util.stream.Collectors; * @author Avrahamg. * @since March 21, 2017 */ -public class MibDaoZusammenImpl implements MibDao { +public class ComponentArtifactDaoZusammenImpl implements ComponentArtifactDao { private static final String ARTIFACT_NAME = "name"; private ZusammenAdaptor zusammenAdaptor; - public MibDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) { + public ComponentArtifactDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) { this.zusammenAdaptor = zusammenAdaptor; } @@ -41,25 +41,30 @@ public class MibDaoZusammenImpl implements MibDao { } @Override - public Optional<MibEntity> getByType(MibEntity mibEntity) { + public Optional<ComponentMonitoringUploadEntity> getByType( + ComponentMonitoringUploadEntity componentMonitoringUploadEntity) { SessionContext context = ZusammenUtil.createSessionContext(); - Id itemId = new Id(mibEntity.getVspId()); + Id itemId = new Id(componentMonitoringUploadEntity.getVspId()); ElementContext elementContext = new ElementContext(itemId, VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), - VspZusammenUtil.getVersionTag(mibEntity.getVersion())); - + VspZusammenUtil.getVersionTag(componentMonitoringUploadEntity.getVersion())); Optional<Element> mibsElement = - zusammenAdaptor.getElementByName(context, elementContext, new Id(mibEntity + zusammenAdaptor.getElementByName(context, elementContext, new Id( + componentMonitoringUploadEntity .getComponentId()), StructureElement.Mibs.toString()); if (mibsElement.isPresent()) { - Optional<Element> mibElement = zusammenAdaptor + Optional<Element> monitoringElement = zusammenAdaptor .getElementByName(context, elementContext, mibsElement.get().getElementId(), - getMibStructuralElement(mibEntity.getType()).toString()); - if (mibElement.isPresent()) { - mibEntity.setId(mibElement.get().getElementId().getValue()); - mibEntity.setArtifactName((String) mibElement.get().getInfo().getProperties().get(ARTIFACT_NAME)); - mibEntity.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(mibElement.get().getData()))); - return Optional.of(mibEntity); + getMonitoringStructuralElement(componentMonitoringUploadEntity.getType()) + .toString()); + if (monitoringElement.isPresent()) { + componentMonitoringUploadEntity.setId(monitoringElement.get().getElementId().getValue()); + componentMonitoringUploadEntity + .setArtifactName( + (String) monitoringElement.get().getInfo().getProperties().get(ARTIFACT_NAME)); + componentMonitoringUploadEntity + .setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(monitoringElement.get().getData()))); + return Optional.of(componentMonitoringUploadEntity); } } @@ -67,44 +72,44 @@ public class MibDaoZusammenImpl implements MibDao { } @Override - public void create(MibEntity mibEntity) { - ZusammenElement mibElement = buildMibElement(mibEntity); + public void create(ComponentMonitoringUploadEntity entity) { + ZusammenElement mibElement = buildMibElement(entity); ZusammenElement mibsElement = VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, null); - ZusammenElement componentElement = buildComponentElement(mibEntity); + ZusammenElement componentElement = buildComponentElement(entity); SessionContext context = ZusammenUtil.createSessionContext(); - Id itemId = new Id(mibEntity.getVspId()); + Id itemId = new Id(entity.getVspId()); ElementContext elementContext = new ElementContext(itemId, VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); Optional<Element> savedElement = zusammenAdaptor.saveElement(context, elementContext, VspZusammenUtil.aggregateElements(componentElement, mibsElement, mibElement), - "Create mib"); + "Create monitoring upload"); savedElement.ifPresent(element -> - mibEntity.setId(element.getSubElements().iterator().next() + entity.setId(element.getSubElements().iterator().next() .getSubElements().iterator().next().getElementId().getValue())); } @Override - public void delete(MibEntity mibEntity) { + public void delete(ComponentMonitoringUploadEntity componentMonitoringUploadEntity) { ZusammenElement mibElement = new ZusammenElement(); - mibElement.setElementId(new Id(mibEntity.getId())); + mibElement.setElementId(new Id(componentMonitoringUploadEntity.getId())); mibElement.setAction(Action.DELETE); SessionContext context = ZusammenUtil.createSessionContext(); - Id itemId = new Id(mibEntity.getVspId()); + Id itemId = new Id(componentMonitoringUploadEntity.getVspId()); ElementContext elementContext = new ElementContext(itemId, VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); zusammenAdaptor.saveElement(context, elementContext, mibElement, - String.format("Delete mib with id %s", mibEntity.getId())); + String.format("Delete mib with id %s", componentMonitoringUploadEntity.getId())); } @Override - public Collection<MibEntity> list(MibEntity mib) { + public Collection<ComponentMonitoringUploadEntity> list(ComponentMonitoringUploadEntity mib) { SessionContext context = ZusammenUtil.createSessionContext(); Id itemId = new Id(mib.getVspId()); ElementContext elementContext = new ElementContext(itemId, @@ -120,14 +125,14 @@ public class MibDaoZusammenImpl implements MibDao { } @Override - public void deleteAll(MibEntity mibEntity) { + public void deleteAll(ComponentMonitoringUploadEntity componentMonitoringUploadEntity) { ZusammenElement mibsElement = VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.DELETE); - ZusammenElement componentElement = buildComponentElement(mibEntity); + ZusammenElement componentElement = buildComponentElement(componentMonitoringUploadEntity); SessionContext context = ZusammenUtil.createSessionContext(); - Id itemId = new Id(mibEntity.getVspId()); + Id itemId = new Id(componentMonitoringUploadEntity.getVspId()); ElementContext elementContext = new ElementContext(itemId, VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); @@ -136,15 +141,17 @@ public class MibDaoZusammenImpl implements MibDao { } @Override - public Collection<MibEntity> listArtifacts(MibEntity mib) { + public Collection<ComponentMonitoringUploadEntity> listArtifacts( + ComponentMonitoringUploadEntity monitoringUploadEntity) { SessionContext context = ZusammenUtil.createSessionContext(); - Id itemId = new Id(mib.getVspId()); + Id itemId = new Id(monitoringUploadEntity.getVspId()); ElementContext elementContext = new ElementContext(itemId, VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), - VspZusammenUtil.getVersionTag(mib.getVersion())); + VspZusammenUtil.getVersionTag(monitoringUploadEntity.getVersion())); final Optional<Element> elementByName = - zusammenAdaptor.getElementByName(context, elementContext, new Id(mib.getComponentId() + zusammenAdaptor.getElementByName(context, elementContext, + new Id(monitoringUploadEntity.getComponentId() ), StructureElement.Mibs.name()); if(!elementByName.isPresent()) @@ -153,49 +160,65 @@ public class MibDaoZusammenImpl implements MibDao { final Id elementId = elementByName.get().getElementId(); return zusammenAdaptor.listElementData(context, elementContext, elementId).stream() .map(element -> - buildMibEntity(element,mib) + buildMibEntity(element, monitoringUploadEntity) ).collect(Collectors.toList()); } } - private MibEntity buildMibEntity (Element element, MibEntity mib) { - MibEntity createdMib = new MibEntity(mib.getVspId(), mib.getVersion(), mib.getComponentId(), + private ComponentMonitoringUploadEntity buildMibEntity(Element element, + ComponentMonitoringUploadEntity monitoringUploadEntity) { + final String componentId = monitoringUploadEntity.getComponentId(); + ComponentMonitoringUploadEntity + createdMib = new ComponentMonitoringUploadEntity(monitoringUploadEntity.getVspId(), + monitoringUploadEntity.getVersion(), + componentId, null); createdMib.setArtifactName((String) element.getInfo().getProperties().get(ARTIFACT_NAME)); createdMib.setArtifact(ByteBuffer.wrap(FileUtils.toByteArray(element.getData()))); - createdMib.setType( ArtifactType.valueOf(element.getInfo().getName())); + createdMib.setType(MonitoringUploadType.valueOf(element.getInfo().getName())); return createdMib; } - private ZusammenElement buildComponentElement(MibEntity mibEntity) { + private ZusammenElement buildComponentElement( + ComponentMonitoringUploadEntity componentMonitoringUploadEntity) { ZusammenElement componentElement = new ZusammenElement(); - componentElement.setElementId(new Id(mibEntity.getComponentId())); + componentElement.setElementId(new Id(componentMonitoringUploadEntity.getComponentId())); componentElement.setAction(Action.IGNORE); return componentElement; } - private ZusammenElement buildMibElement(MibEntity mib) { - ZusammenElement mibElement = VspZusammenUtil - .buildStructuralElement(getMibStructuralElement(mib.getType()), Action.UPDATE); - mibElement.getInfo().getProperties().put(ARTIFACT_NAME, mib.getArtifactName()); - mibElement.setData(new ByteArrayInputStream(mib.getArtifact().array())); - return mibElement; + private ZusammenElement buildMibElement(ComponentMonitoringUploadEntity monitoringUploadEntity) { + ZusammenElement monitoringElement = VspZusammenUtil + .buildStructuralElement(getMonitoringStructuralElement(monitoringUploadEntity.getType()), + Action.UPDATE); + monitoringElement.getInfo().getProperties() + .put(ARTIFACT_NAME, monitoringUploadEntity.getArtifactName()); + monitoringElement + .setData(new ByteArrayInputStream(monitoringUploadEntity.getArtifact().array())); + return monitoringElement; } - private MibEntity mapElementInfoToMib(String vspId, Version version, String componentId, - ElementInfo elementInfo) { - MibEntity mib = new MibEntity(vspId, version, componentId, elementInfo.getId().getValue()); - mib.setArtifactName((String) elementInfo.getInfo().getProperties().get(ARTIFACT_NAME)); - mib.setType(ArtifactType.valueOf(elementInfo.getInfo().getName())); - return mib; + private ComponentMonitoringUploadEntity mapElementInfoToMib(String vspId, Version version, + String componentId, + ElementInfo elementInfo) { + ComponentMonitoringUploadEntity + monitoringUploadEntity = new ComponentMonitoringUploadEntity(vspId, version, componentId, + elementInfo.getId().getValue()); + monitoringUploadEntity + .setArtifactName((String) elementInfo.getInfo().getProperties().get(ARTIFACT_NAME)); + monitoringUploadEntity.setType(MonitoringUploadType.valueOf(elementInfo.getInfo().getName())); + return monitoringUploadEntity; } - private StructureElement getMibStructuralElement(ArtifactType type) { + private StructureElement getMonitoringStructuralElement(MonitoringUploadType type) + throws IllegalArgumentException { switch (type) { case SNMP_POLL: return StructureElement.SNMP_POLL; case SNMP_TRAP: return StructureElement.SNMP_TRAP; + case VES_EVENTS: + return StructureElement.VES_EVENTS; default: throw new IllegalArgumentException(); } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java index 8ef09ada7b..ed6a13d2a1 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDaoZusammenImpl.java @@ -215,7 +215,11 @@ public class ComponentDaoZusammenImpl implements ComponentDao { componentQuestionnaireToZusammen(component.getQuestionnaireData(), Action.CREATE), VspZusammenUtil.buildStructuralElement(StructureElement.Nics, Action.CREATE), VspZusammenUtil.buildStructuralElement(StructureElement.Processes, Action.CREATE), - VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.CREATE))); + VspZusammenUtil.buildStructuralElement(StructureElement.Mibs, Action.CREATE), + VspZusammenUtil.buildStructuralElement(StructureElement.Computes, Action.CREATE), + VspZusammenUtil.buildStructuralElement(StructureElement.Images, Action.CREATE))); + + } return componentElement; } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelPropertyName.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelPropertyName.java new file mode 100644 index 0000000000..426bb52452 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComponentDependencyModelPropertyName.java @@ -0,0 +1,12 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen; + +/** + * Created by ayalaben on 5/16/2017 + */ +public enum ComponentDependencyModelPropertyName { + id, + relation, + sourcecomponent_id, + targetcomponent_id, + +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComputeDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComputeDaoZusammenImpl.java new file mode 100644 index 0000000000..aa4bab67df --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ComputeDaoZusammenImpl.java @@ -0,0 +1,251 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen; + + +import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; +import com.amdocs.zusammen.datatypes.Id; +import com.amdocs.zusammen.datatypes.SessionContext; +import com.amdocs.zusammen.datatypes.item.Action; +import com.amdocs.zusammen.datatypes.item.ElementContext; +import com.amdocs.zusammen.datatypes.item.Info; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.zusammen.api.ZusammenAdaptor; +import org.openecomp.core.zusammen.api.ZusammenUtil; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.ByteArrayInputStream; +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import java.util.stream.Collectors; + +public class ComputeDaoZusammenImpl implements ComputeDao { + + private ZusammenAdaptor zusammenAdaptor; + + public ComputeDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) { + this.zusammenAdaptor = zusammenAdaptor; + } + + @Override + public void registerVersioning(String versionableEntityType) { + } + + @Override + public Collection<ComputeEntity> list(ComputeEntity compute) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(compute.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(compute.getVersion())); + + return listComputes(context, elementContext, compute); + } + + private Collection<ComputeEntity> listComputes(SessionContext context, + ElementContext elementContext, ComputeEntity compute) { + return zusammenAdaptor + .listElementsByName(context, elementContext, new Id(compute.getComponentId()), + StructureElement.Computes.name()) + .stream().map(elementInfo -> mapElementInfoToCompute( + compute.getVspId(), compute.getVersion(), compute.getComponentId(), elementInfo)) + .collect(Collectors.toList()); + } + + private static ComputeEntity mapElementInfoToCompute(String vspId, Version version, + String componentId, ElementInfo elementInfo) { + ComputeEntity componentEntity = + new ComputeEntity(vspId, version, componentId, elementInfo.getId().getValue()); + componentEntity.setCompositionData( + elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name())); + return componentEntity; + } + + @Override + public void create(ComputeEntity compute) { + ZusammenElement computeElement = computeToZusammen(compute, Action.CREATE); + + ZusammenElement computesElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Computes, null); + computesElement.setSubElements(Collections.singletonList(computeElement)); + + ZusammenElement componentElement = new ZusammenElement(); + componentElement.setElementId(new Id(compute.getComponentId())); + componentElement.setAction(Action.IGNORE); + componentElement.setSubElements(Collections.singletonList(computesElement)); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(compute.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + + Optional<Element> savedElement = + zusammenAdaptor.saveElement(context, elementContext, componentElement, "Create compute"); + savedElement.ifPresent(element -> + compute.setId(element.getSubElements().iterator().next() + .getSubElements().iterator().next().getElementId().getValue())); + } + + @Override + public void update(ComputeEntity compute) { + ZusammenElement computeElement = computeToZusammen(compute, Action.UPDATE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(compute.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + zusammenAdaptor.saveElement(context, elementContext, computeElement, + String.format("Update compute with id %s", compute.getId())); + } + + @Override + public ComputeEntity get(ComputeEntity compute) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(compute.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(compute.getVersion())); + Optional<Element> element = zusammenAdaptor.getElement(context, elementContext, compute.getId()); + + if (element.isPresent()) { + compute.setCompositionData(new String(FileUtils.toByteArray(element.get().getData()))); + return compute; + } else { + return null; + } + } + + @Override + public void delete(ComputeEntity compute) { + ZusammenElement computeElement = new ZusammenElement(); + computeElement.setElementId(new Id(compute.getId())); + computeElement.setAction(Action.DELETE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(compute.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + zusammenAdaptor.saveElement(context, elementContext, computeElement, + String.format("Delete compute with id %s", compute.getId())); + } + + @Override + public ComputeEntity getQuestionnaireData(String vspId, Version version, String componentId, + String computeId) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(version)); + + return getQuestionnaire(context, elementContext, + new ComputeEntity(vspId, version, componentId, computeId)); + } + + private ComputeEntity getQuestionnaire(SessionContext context, ElementContext elementContext, + ComputeEntity compute) { + Optional<Element> questionnaireElement = zusammenAdaptor + .getElementByName(context, elementContext, new Id(compute.getId()), + StructureElement.Questionnaire.name()); + return questionnaireElement.map( + element -> element.getData() == null + ? null + : new String(FileUtils.toByteArray(element.getData()))) + .map(questionnaireData -> { + compute.setQuestionnaireData(questionnaireData); + return compute; + }) + .orElse(null); + } + + @Override + public void updateQuestionnaireData(String vspId, Version version, String componentId, + String computeId, String questionnaireData) { + ZusammenElement questionnaireElement = + computeQuestionnaireToZusammen(questionnaireData, Action.UPDATE); + + ZusammenElement computeElement = new ZusammenElement(); + computeElement.setAction(Action.IGNORE); + computeElement.setElementId(new Id(computeId)); + computeElement.setSubElements(Collections.singletonList(questionnaireElement)); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + zusammenAdaptor.saveElement(context, elementContext, computeElement, "Update compute " + + "questionnaire"); + } + + @Override + public Collection<ComputeEntity> listByVsp(String vspId, Version version) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(version)); + + Collection<ComponentEntity> components = ComponentDaoZusammenImpl + .listComponents(zusammenAdaptor, context, elementContext, vspId, version); + + return components.stream() + .map(component -> + listComputes(context, elementContext, + new ComputeEntity(vspId, version, component.getId(), null)).stream() + .map(compute -> getQuestionnaire(context, elementContext, compute)) + .collect(Collectors.toList())) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + } + + @Override + public void deleteAll(String vspId, Version version) { + ZusammenElement computesElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Computes, Action.DELETE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + zusammenAdaptor.saveElement(context, + new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)), + computesElement, "Delete all computes"); + } + + private ZusammenElement computeToZusammen(ComputeEntity compute, Action action) { + ZusammenElement computeElement = buildComputeElement(compute, action); + if (action == Action.CREATE) { + computeElement.setSubElements(Collections.singletonList( + computeQuestionnaireToZusammen(compute.getQuestionnaireData(), Action.CREATE))); + } + return computeElement; + } + + private ZusammenElement computeQuestionnaireToZusammen(String questionnaireData, + Action action) { + ZusammenElement questionnaireElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, action); + questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes())); + return questionnaireElement; + } + + private ZusammenElement buildComputeElement(ComputeEntity compute, Action action) { + ZusammenElement computeElement = new ZusammenElement(); + computeElement.setAction(action); + if (compute.getId() != null) { + computeElement.setElementId(new Id(compute.getId())); + } + Info info = new Info(); + info.addProperty(ElementPropertyName.type.name(), ElementType.Compute); + info.addProperty(ElementPropertyName.compositionData.name(), compute.getCompositionData()); + computeElement.setInfo(info); + computeElement.setData(new ByteArrayInputStream(compute.getCompositionData().getBytes())); + return computeElement; + } + + + +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/DeploymentFlavorDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/DeploymentFlavorDaoZusammenImpl.java new file mode 100644 index 0000000000..947bcc27e5 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/DeploymentFlavorDaoZusammenImpl.java @@ -0,0 +1,179 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen; + +import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; +import com.amdocs.zusammen.datatypes.Id; +import com.amdocs.zusammen.datatypes.SessionContext; +import com.amdocs.zusammen.datatypes.item.Action; +import com.amdocs.zusammen.datatypes.item.ElementContext; +import com.amdocs.zusammen.datatypes.item.Info; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.zusammen.api.ZusammenAdaptor; +import org.openecomp.core.zusammen.api.ZusammenUtil; +import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.ByteArrayInputStream; +import java.util.Collection; +import java.util.Optional; +import java.util.stream.Collectors; + +public class DeploymentFlavorDaoZusammenImpl implements DeploymentFlavorDao { + + private ZusammenAdaptor zusammenAdaptor; + + public DeploymentFlavorDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) { + this.zusammenAdaptor = zusammenAdaptor; + } + + @Override + public void registerVersioning(String versionableEntityType) { + } + + @Override + public Collection<DeploymentFlavorEntity> list(DeploymentFlavorEntity deploymentFlavor) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(deploymentFlavor.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(deploymentFlavor.getVersion())); + + return listDeploymentFlavor(zusammenAdaptor, context, elementContext, deploymentFlavor.getVspId(), + deploymentFlavor.getVersion()); + } + + static Collection<DeploymentFlavorEntity> listDeploymentFlavor(ZusammenAdaptor zusammenAdaptor, + SessionContext context, + ElementContext elementContext, + String vspId, Version version) { + return zusammenAdaptor + .listElementsByName(context, elementContext, null, StructureElement.DeploymentFlavors.name()) + .stream().map(elementInfo -> mapElementInfoToComponent(vspId, version, elementInfo)) + .collect(Collectors.toList()); + } + + private static DeploymentFlavorEntity mapElementInfoToComponent(String vspId, Version version, + ElementInfo elementInfo) { + DeploymentFlavorEntity deploymentFlavorEntity = + new DeploymentFlavorEntity(vspId, version, elementInfo.getId().getValue()); + deploymentFlavorEntity.setCompositionData( + elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name())); + return deploymentFlavorEntity; + } + + @Override + public void create(DeploymentFlavorEntity deploymentFlavor) { + ZusammenElement deploymentFlavorElement = deploymentFlavorToZusammen(deploymentFlavor, + Action.CREATE); + ZusammenElement deploymentFlavorElements = + VspZusammenUtil.buildStructuralElement(StructureElement.DeploymentFlavors, null); + deploymentFlavorElements.getSubElements().add(deploymentFlavorElement); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(deploymentFlavor.getVspId()); + Optional<Element> savedElement = zusammenAdaptor.saveElement(context, + new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)), + deploymentFlavorElements, "Create deloymentFlavor"); + savedElement.ifPresent(element -> + deploymentFlavor.setId(element.getSubElements().iterator().next().getElementId() + .getValue())); + } + + @Override + public void update(DeploymentFlavorEntity deploymentFlavor) { + ZusammenElement deploymentFlavorElement = deploymentFlavorToZusammen(deploymentFlavor, + Action.UPDATE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(deploymentFlavor.getVspId()); + zusammenAdaptor.saveElement(context, + new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)), + deploymentFlavorElement, String.format("Update deloymentFlavor with id %s", + deploymentFlavor.getId())); + } + + @Override + public DeploymentFlavorEntity get(DeploymentFlavorEntity deploymentFlavor) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(deploymentFlavor.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(deploymentFlavor.getVersion())); + + Optional<Element> element = + zusammenAdaptor.getElement(context, elementContext, deploymentFlavor.getId()); + + if (element.isPresent()) { + deploymentFlavor.setCompositionData(new String(FileUtils.toByteArray(element.get() + .getData()))); + return deploymentFlavor; + } + return null; + } + + @Override + public void delete(DeploymentFlavorEntity deploymentFlavor) { + ZusammenElement componentElement = new ZusammenElement(); + componentElement.setElementId(new Id(deploymentFlavor.getId())); + componentElement.setAction(Action.DELETE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(deploymentFlavor.getVspId()); + zusammenAdaptor.saveElement(context, + new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)), + componentElement, String.format("Delete deloymentFlavor with id %s", + deploymentFlavor.getId())); + } + + @Override + public void deleteAll(String vspId, Version version) { + ZusammenElement deploymentFlavorsElement = + VspZusammenUtil.buildStructuralElement(StructureElement.DeploymentFlavors, Action.DELETE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + zusammenAdaptor.saveElement(context, + new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)), + deploymentFlavorsElement, "Delete all deploymentFlavors"); + } + + private ZusammenElement deploymentFlavorToZusammen(DeploymentFlavorEntity deploymentFlavor, + Action action) { + ZusammenElement deploymentFlavorElement = buildDeploymentFlavorElement + (deploymentFlavor, action); + + return deploymentFlavorElement; + } + + /*private ZusammenElement deplymentFlavorQuestionnaireToZusammen(String questionnaireData, + Action action) { + ZusammenElement questionnaireElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, action); + questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes())); + return questionnaireElement; + }*/ + + private ZusammenElement buildDeploymentFlavorElement(DeploymentFlavorEntity deploymentFlavor, + Action action) { + ZusammenElement deploymentFlavorElement = new ZusammenElement(); + deploymentFlavorElement.setAction(action); + if (deploymentFlavor.getId() != null) { + deploymentFlavorElement.setElementId(new Id(deploymentFlavor.getId())); + } + Info info = new Info(); + info.addProperty(ElementPropertyName.type.name(), ElementType.DeploymentFlavor); + info.addProperty(ElementPropertyName.compositionData.name(), deploymentFlavor + .getCompositionData()); + deploymentFlavorElement.setInfo(info); + deploymentFlavorElement.setData(new ByteArrayInputStream(deploymentFlavor.getCompositionData() + .getBytes())); + return deploymentFlavorElement; + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java index b0313f5b14..9da0780f73 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ElementType.java @@ -5,5 +5,9 @@ public enum ElementType { Component, Nic, Process, - LKG + Mib, + LKG, + Compute, + DeploymentFlavor, + Image } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ImageDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ImageDaoZusammenImpl.java new file mode 100644 index 0000000000..d913b18956 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/ImageDaoZusammenImpl.java @@ -0,0 +1,252 @@ +package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen; + + +import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; +import com.amdocs.zusammen.datatypes.Id; +import com.amdocs.zusammen.datatypes.SessionContext; +import com.amdocs.zusammen.datatypes.item.Action; +import com.amdocs.zusammen.datatypes.item.ElementContext; +import com.amdocs.zusammen.datatypes.item.Info; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.zusammen.api.ZusammenAdaptor; +import org.openecomp.core.zusammen.api.ZusammenUtil; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; +import org.openecomp.sdc.versioning.dao.types.Version; + +import java.io.ByteArrayInputStream; +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import java.util.stream.Collectors; + +public class ImageDaoZusammenImpl implements ImageDao { + + private ZusammenAdaptor zusammenAdaptor; + + public ImageDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) { + this.zusammenAdaptor = zusammenAdaptor; + } + + @Override + public void registerVersioning(String versionableEntityType) { + } + + @Override + public Collection<ImageEntity> list(ImageEntity image) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(image.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(image.getVersion())); + + return listImages(context, elementContext, image); + } + + private Collection<ImageEntity> listImages(SessionContext context, + ElementContext elementContext, ImageEntity image) { + return zusammenAdaptor + .listElementsByName(context, elementContext, new Id(image.getComponentId()), + StructureElement.Images.name()) + .stream().map(elementInfo -> mapElementInfoToImage( + image.getVspId(), image.getVersion(), image.getComponentId(), elementInfo)) + .collect(Collectors.toList()); + } + + private static ImageEntity mapElementInfoToImage(String vspId, Version version, + String componentId, ElementInfo elementInfo) { + ImageEntity imageEntity = + new ImageEntity(vspId, version, componentId, elementInfo.getId().getValue()); + imageEntity.setCompositionData( + elementInfo.getInfo().getProperty(ElementPropertyName.compositionData.name())); + return imageEntity; + } + + @Override + public void create(ImageEntity image) { + ZusammenElement imageElement = imageToZusammen(image, Action.CREATE); + + ZusammenElement imagesElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Images, null); + imagesElement.setSubElements(Collections.singletonList(imageElement)); + + ZusammenElement componentElement = new ZusammenElement(); + componentElement.setElementId(new Id(image.getComponentId())); + componentElement.setAction(Action.IGNORE); + componentElement.setSubElements(Collections.singletonList(imagesElement)); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(image.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + + Optional<Element> savedElement = + zusammenAdaptor.saveElement(context, elementContext, componentElement, "Create image"); + savedElement.ifPresent(element -> + image.setId(element.getSubElements().iterator().next() + .getSubElements().iterator().next().getElementId().getValue())); + } + + @Override + public void update(ImageEntity image) { + ZusammenElement imageElement = imageToZusammen(image, Action.UPDATE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(image.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + zusammenAdaptor.saveElement(context, elementContext, imageElement, + String.format("Update image with id %s", image.getId())); + } + + @Override + public ImageEntity get(ImageEntity image) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(image.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(image.getVersion())); + Optional<Element> element = zusammenAdaptor.getElement(context, elementContext, image.getId()); + + if (element.isPresent()) { + image.setCompositionData(new String(FileUtils.toByteArray(element.get().getData()))); + return image; + } else { + return null; + } + } + + @Override + public void delete(ImageEntity image) { + ZusammenElement imageElement = new ZusammenElement(); + imageElement.setElementId(new Id(image.getId())); + imageElement.setAction(Action.DELETE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(image.getVspId()); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + zusammenAdaptor.saveElement(context, elementContext, imageElement, + String.format("Delete image with id %s", image.getId())); + } + + @Override + public void deleteByVspId(String vspId, Version version) { + ZusammenElement imagesElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Images, Action.DELETE); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + zusammenAdaptor.saveElement(context, + new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)), + imagesElement, String.format("Delete all images with vsp id %s", vspId)); + } + + @Override + public Collection<ImageEntity> listByVsp(String vspId, Version version) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(version)); + + Collection<ComponentEntity> components = ComponentDaoZusammenImpl + .listComponents(zusammenAdaptor, context, elementContext, vspId, version); + + return components.stream() + .map(component -> + listImages(context, elementContext, + new ImageEntity(vspId, version, component.getId(), null)).stream() + .map(image -> getQuestionnaire(context, elementContext, image)) + .collect(Collectors.toList())) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + } + + @Override + public ImageEntity getQuestionnaireData(String vspId, Version version, String componentId, + String imageId) { + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor), + VspZusammenUtil.getVersionTag(version)); + + return getQuestionnaire(context, elementContext, + new ImageEntity(vspId, version, componentId, imageId)); + } + + private ImageEntity getQuestionnaire(SessionContext context, ElementContext elementContext, + ImageEntity image) { + Optional<Element> questionnaireElement = zusammenAdaptor + .getElementByName(context, elementContext, new Id(image.getId()), + StructureElement.Questionnaire.name()); + return questionnaireElement.map( + element -> element.getData() == null + ? null + : new String(FileUtils.toByteArray(element.getData()))) + .map(questionnaireData -> { + image.setQuestionnaireData(questionnaireData); + return image; + }) + .orElse(null); + } + + @Override + public void updateQuestionnaireData(String vspId, Version version, String componentId, + String imageId, String questionnaireData) { + ZusammenElement questionnaireElement = + imageQuestionnaireToZusammen(questionnaireData, Action.UPDATE); + + ZusammenElement imageElement = new ZusammenElement(); + imageElement.setAction(Action.IGNORE); + imageElement.setElementId(new Id(imageId)); + imageElement.setSubElements(Collections.singletonList(questionnaireElement)); + + SessionContext context = ZusammenUtil.createSessionContext(); + Id itemId = new Id(vspId); + ElementContext elementContext = new ElementContext(itemId, + VspZusammenUtil.getFirstVersionId(context, itemId, zusammenAdaptor)); + zusammenAdaptor.saveElement(context, elementContext, imageElement, "Update image " + + "questionnaire"); + } + + + + private ZusammenElement imageToZusammen(ImageEntity image, Action action) { + ZusammenElement imageElement = buildImageElement(image, action); + if (action == Action.CREATE) { + imageElement.setSubElements(Collections.singletonList( + imageQuestionnaireToZusammen(image.getQuestionnaireData(), Action.CREATE))); + } + return imageElement; + } + + private ZusammenElement imageQuestionnaireToZusammen(String questionnaireData, + Action action) { + ZusammenElement questionnaireElement = + VspZusammenUtil.buildStructuralElement(StructureElement.Questionnaire, action); + questionnaireElement.setData(new ByteArrayInputStream(questionnaireData.getBytes())); + return questionnaireElement; + } + + private ZusammenElement buildImageElement(ImageEntity image, Action action) { + ZusammenElement imageElement = new ZusammenElement(); + imageElement.setAction(action); + if (image.getId() != null) { + imageElement.setElementId(new Id(image.getId())); + } + Info info = new Info(); + info.addProperty(ElementPropertyName.type.name(), ElementType.Image); + info.addProperty(ElementPropertyName.compositionData.name(), image.getCompositionData()); + imageElement.setInfo(info); + imageElement.setData(new ByteArrayInputStream(image.getCompositionData().getBytes())); + return imageElement; + } + + +} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java index 5d53741ebf..6f15f5cdee 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/StructureElement.java @@ -15,6 +15,10 @@ public enum StructureElement { Mibs, SNMP_TRAP, SNMP_POLL, + VES_EVENTS, Questionnaire, ComponentDependencies, + Computes, + Images, + DeploymentFlavors } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java index 65a41330a7..eef90d4742 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java @@ -1,5 +1,6 @@ package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen; +import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; import com.amdocs.zusammen.datatypes.Id; import com.amdocs.zusammen.datatypes.SessionContext; @@ -21,6 +22,7 @@ import org.openecomp.sdc.versioning.types.VersionableEntityStoreType; import java.io.ByteArrayInputStream; import java.util.Collection; import java.util.Date; +import java.util.Optional; import java.util.stream.Collectors; public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareProductInfoDao { @@ -148,6 +150,17 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP } + @Override + public boolean isManual(String vspId, Version version) { + final VspDetails vspDetails = get(new VspDetails(vspId, version)); + if (vspDetails != null) { + if ("Manual".equals(vspDetails.getOnboardingMethod())) { + return true; + } + } + return false; + } + private Info mapVspDetailsToZusammenItemInfo(VspDetails vspDetails) { Info info = new Info(); info.setName(vspDetails.getName()); @@ -186,6 +199,7 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP info.addProperty(InfoPropertyName.licenseAgreement.name(), vspDetails.getLicenseAgreement()); info.addProperty(InfoPropertyName.featureGroups.name(), vspDetails.getFeatureGroups()); info.addProperty(InfoPropertyName.oldVersion.name(), vspDetails.getOldVersion()); + info.addProperty(InfoPropertyName.onboardingMethod.name(), vspDetails.getOnboardingMethod()); } private VspDetails mapInfoToVspDetails(String vspId, Version version, Info info, @@ -208,6 +222,8 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP //Boolean oldVersion = ind == null || "true".equals( ind.toLowerCase()); vspDetails.setOldVersion(oldVersion); + vspDetails.setOnboardingMethod(info.getProperty(InfoPropertyName.onboardingMethod.name())); + return vspDetails; } @@ -222,7 +238,8 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP vendorVersion, licenseAgreement, featureGroups, - oldVersion + oldVersion, + onboardingMethod } } |