diff options
author | Toine Siebelink <toine.siebelink@est.tech> | 2024-11-28 17:17:24 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2024-11-28 17:17:24 +0000 |
commit | b97d522cb3d08b596241aea88aafe3bd08b4ef77 (patch) | |
tree | ad9d56670518b8775535d74ca9788cfa8fe88746 /cps-service/src/main/java/org | |
parent | 541c25e33adf734dec724809f76cbcec3a86c0ce (diff) | |
parent | 6067e18b93a7bde19547406769498fcd64407ad8 (diff) |
Merge "De-Registration without Orphaned Module Check"
Diffstat (limited to 'cps-service/src/main/java/org')
3 files changed, 58 insertions, 2 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java b/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java index bbfe496d85..304ed288f5 100644 --- a/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java +++ b/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java @@ -188,4 +188,9 @@ public interface CpsModuleService { final Map<String, String> parentAttributes, final Map<String, String> childAttributes); + /** + * Remove any Yang Resource Modules from the DB that are no longer referenced by any schema set. + */ + void deleteUnusedYangResourceModules(); + } diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java index 4063a7f769..9f3f2cc571 100644 --- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java +++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java @@ -106,7 +106,6 @@ public class CpsModuleServiceImpl implements CpsModuleService { } cpsModulePersistenceService.deleteSchemaSet(dataspaceName, schemaSetName); yangTextSchemaSourceSetCache.removeFromCache(dataspaceName, schemaSetName); - cpsModulePersistenceService.deleteUnusedYangResourceModules(); } @Override @@ -119,7 +118,6 @@ public class CpsModuleServiceImpl implements CpsModuleService { .stream().map(Anchor::getName).collect(Collectors.toSet()); cpsAnchorService.deleteAnchors(dataspaceName, anchorNames); cpsModulePersistenceService.deleteSchemaSets(dataspaceName, schemaSetNames); - cpsModulePersistenceService.deleteUnusedYangResourceModules(); for (final String schemaSetName : schemaSetNames) { yangTextSchemaSourceSetCache.removeFromCache(dataspaceName, schemaSetName); } @@ -182,6 +180,11 @@ public class CpsModuleServiceImpl implements CpsModuleService { childAttributes); } + @Override + public void deleteUnusedYangResourceModules() { + cpsModulePersistenceService.deleteUnusedYangResourceModules(); + } + private boolean isCascadeDeleteProhibited(final CascadeDeleteAllowed cascadeDeleteAllowed) { return CascadeDeleteAllowed.CASCADE_DELETE_PROHIBITED == cascadeDeleteAllowed; } diff --git a/cps-service/src/main/java/org/onap/cps/init/DbCleaner.java b/cps-service/src/main/java/org/onap/cps/init/DbCleaner.java new file mode 100644 index 0000000000..6bd3e1f204 --- /dev/null +++ b/cps-service/src/main/java/org/onap/cps/init/DbCleaner.java @@ -0,0 +1,48 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.init; + +import java.util.concurrent.TimeUnit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.onap.cps.api.CpsModuleService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +@Slf4j +@RequiredArgsConstructor +@Service +public class DbCleaner { + + private final CpsModuleService cpsModuleService; + + /** + * This method will clean up the db during application start up. + * It wil run once and currently only removes unused yang resource modules. + * + */ + @Scheduled(initialDelay = 1, timeUnit = TimeUnit.SECONDS) + public void cleanDbAtStartUp() { + log.info("CPS Application started, commencing DB clean up"); + cpsModuleService.deleteUnusedYangResourceModules(); + log.info("DB clean up completed"); + } +} |