diff options
author | 2019-03-22 11:09:33 -0700 | |
---|---|---|
committer | 2019-03-22 11:09:51 -0700 | |
commit | ffb6bdfd6de2afa23d95d0884c9db4059982deed (patch) | |
tree | c528a1106245ee1b4ad77cd7586d6452d6e34d40 /ms/controllerblueprints/modules/db-resources | |
parent | 1a47dc3ce480c4735cbf019918372a0e1ff367bc (diff) | |
parent | 1d32aa56013891203fafb2f32d2dc5b9ada0a384 (diff) |
Migrate "ms/controllerblueprints" from ccsdk/apps
Migrate code from ccsdk/apps ms/controllerblueprints
subfolder into ccsdk/cds
Issue-ID: CIMAN-245
Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
Diffstat (limited to 'ms/controllerblueprints/modules/db-resources')
5 files changed, 330 insertions, 0 deletions
diff --git a/ms/controllerblueprints/modules/db-resources/pom.xml b/ms/controllerblueprints/modules/db-resources/pom.xml new file mode 100644 index 000000000..d1c3c44c3 --- /dev/null +++ b/ms/controllerblueprints/modules/db-resources/pom.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright © 2017-2018 AT&T Intellectual Property. + ~ + ~ Modifications Copyright © 2018 IBM. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.onap.ccsdk.apps.controllerblueprints</groupId> + <artifactId>modules</artifactId> + <version>0.4.2-SNAPSHOT</version> + </parent> + <artifactId>db-resources</artifactId> + <name>Controller Blueprints DB Resources</name> + + <properties> + </properties> + + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.apps.controllerblueprints</groupId> + <artifactId>blueprint-core</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + </dependency> + </dependencies> +</project> diff --git a/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt new file mode 100644 index 000000000..e43231527 --- /dev/null +++ b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt @@ -0,0 +1,86 @@ +/* + * Copyright © 2017-2018 AT&T Intellectual Property. + * Modifications Copyright © 2019 Bell Canada. + * Modifications Copyright © 2019 IBM. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.ccsdk.apps.controllerblueprints.db.resources + +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException +import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintCatalogService +import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintValidatorService +import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintArchiveUtils +import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintFileUtils +import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils +import java.io.File +import java.nio.file.Path +import java.util.* +import javax.persistence.MappedSuperclass + +@MappedSuperclass +abstract class BlueprintCatalogServiceImpl(private val blueprintValidator: BluePrintValidatorService) + : BluePrintCatalogService { + + override fun saveToDatabase(blueprintFile: File, validate: Boolean): String { + val extractedDirectory: File + val archivedDirectory: File + val toDeleteDirectory: File + val blueprintId = UUID.randomUUID().toString() + + if (blueprintFile.isDirectory) { + extractedDirectory = blueprintFile + archivedDirectory = File("$blueprintFile.zip") + toDeleteDirectory = archivedDirectory + + if (!BluePrintArchiveUtils.compress(blueprintFile, archivedDirectory, true)) { + throw BluePrintException("Fail to compress blueprint") + } + } else { + val targetDir = "${blueprintFile.parent}/${BluePrintFileUtils.stripFileExtension(blueprintFile.name)}" + + extractedDirectory = BluePrintArchiveUtils.deCompress(blueprintFile, targetDir) + archivedDirectory = blueprintFile + toDeleteDirectory = extractedDirectory + } + + var valid = BluePrintConstants.FLAG_N + if (validate) { + blueprintValidator.validateBluePrints(extractedDirectory.path) + valid = BluePrintConstants.FLAG_Y + } + + val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(blueprintId, extractedDirectory.path) + val metadata = bluePrintRuntimeService.bluePrintContext().metadata!! + metadata[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID] = blueprintId + metadata[BluePrintConstants.PROPERTY_BLUEPRINT_VALID] = valid + + save(metadata, archivedDirectory) + + toDeleteDirectory.deleteRecursively() + + return blueprintId + } + + override fun getFromDatabase(name: String, version: String, extract: Boolean): Path = get(name, version, extract) + ?: throw BluePrintException("Could not find blueprint $name:$version from database") + + override fun deleteFromDatabase(name: String, version: String) = delete(name, version) + + abstract fun save(metadata: MutableMap<String, String>, archiveFile: File) + abstract fun get(name: String, version: String, extract: Boolean): Path? + abstract fun delete(name: String, version: String) + +}
\ No newline at end of file diff --git a/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt new file mode 100644 index 000000000..680f1b2ce --- /dev/null +++ b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt @@ -0,0 +1,91 @@ +/* + * Copyright © 2017-2018 AT&T Intellectual Property. + * Modifications Copyright © 2019 Bell Canada. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.ccsdk.apps.controllerblueprints.db.resources.repository + +import org.jetbrains.annotations.NotNull +import java.util.Optional +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.repository.NoRepositoryBean + +/** + * @param <T> Model + * @param <B> ModelContent + */ +@NoRepositoryBean +interface ModelContentRepository<T, B> : JpaRepository<B, String> { + + /** + * This is a findById method + * + * @param id id + * @return Optional<T> + */ + @NotNull + override fun findById(@NotNull id: String): Optional<B> + + /** + * This is a findTopByBlueprintModelAndContentType method + * + * @param blueprintModel blueprintModel + * @param contentType contentType + * @return B? + */ + fun findTopByBlueprintModelAndContentType(blueprintModel: T, contentType: String): B? + + /** + * This is a findByBlueprintModelAndContentType method + * + * @param blueprintModel blueprintModel + * @param contentType contentType + * @return List<B> + */ + fun findByBlueprintModelAndContentType(blueprintModel: T, contentType: String): List<B> + + /** + * This is a findByBlueprintModel method + * + * @param blueprintModel T + * @return List<B> + */ + fun findByBlueprintModel(blueprintModel: T): List<B> + + /** + * This is a findByBlueprintModelAndContentTypeAndName method + * + * @param blueprintModel blueprintModel + * @param contentType contentType + * @param name name + * @return B? + */ + fun findByBlueprintModelAndContentTypeAndName(blueprintModel: T, contentType: String, name: String): B? + + /** + * This is a deleteByMdeleteByBlueprintModelodelName method + * + * @param blueprintModel T + */ + fun deleteByBlueprintModel(blueprintModel: T) + + /** + * This is a deleteById method + * + * @param id id + */ + override fun deleteById(@NotNull id: String) + +} diff --git a/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt new file mode 100644 index 000000000..e796c3665 --- /dev/null +++ b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt @@ -0,0 +1,90 @@ +/* + * Copyright © 2017-2018 AT&T Intellectual Property. + * Modifications Copyright © 2019 Bell Canada. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.ccsdk.apps.controllerblueprints.db.resources.repository + +import org.jetbrains.annotations.NotNull +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.repository.NoRepositoryBean +import java.util.* +import javax.transaction.Transactional + +/** + * @param <T> Model + */ +@NoRepositoryBean +interface ModelRepository<T> : JpaRepository<T, String> { + + /** + * This is a findById method + * + * @param id id + * @return Optional<T> + */ + @NotNull + override fun findById(@NotNull id: String): Optional<T> + + /** + * This is a findByArtifactNameAndArtifactVersion method + * + * @param artifactName artifactName + * @param artifactVersion artifactVersion + * @return T? + */ + fun findByArtifactNameAndArtifactVersion(artifactName: String, artifactVersion: String): T? + + /** + * This is a findTopByArtifactNameOrderByArtifactIdDesc method + * + * @param artifactName artifactName + * @return T? + */ + fun findTopByArtifactNameOrderByArtifactVersionDesc(artifactName: String): T? + + /** + * This is a findTopByArtifactName method + * + * @param artifactName artifactName + * @return List<T> + */ + fun findTopByArtifactName(artifactName: String): List<T> + + /** + * This is a findByTagsContainingIgnoreCase method + * + * @param tags tags + * @return List<T> + */ + fun findByTagsContainingIgnoreCase(tags: String): List<T> + + /** + * This is a deleteByArtifactNameAndArtifactVersion method + * + * @param artifactName artifactName + * @param artifactVersion artifactVersion + */ + @Transactional + fun deleteByArtifactNameAndArtifactVersion(artifactName: String, artifactVersion: String) + + /** + * This is a deleteById method + * + * @param id id + */ + override fun deleteById(@NotNull id: String) + +}
\ No newline at end of file diff --git a/ms/controllerblueprints/modules/db-resources/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImplTest.kt b/ms/controllerblueprints/modules/db-resources/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImplTest.kt new file mode 100644 index 000000000..60541c3fd --- /dev/null +++ b/ms/controllerblueprints/modules/db-resources/src/test/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImplTest.kt @@ -0,0 +1,21 @@ +/* + * Copyright © 2019 Bell Canada + * Modifications Copyright © 2019 Bell Canada. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.ccsdk.apps.controllerblueprints.db.resources + +// TODO +class BlueprintCatalogServiceImplTest
\ No newline at end of file |