X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fapi%2FCpsModuleService.java;h=79d6e03d4a908fd71b7371d5351bd2f7ac5d1fba;hb=1839f38e054a958793ec40f524d911253086c74e;hp=325893d6fd21a444defaa6d705c31951790d15cb;hpb=a0da7f6b3e04ee6f06f4580f8a14e60f3438d5e7;p=cps.git 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 325893d6f..79d6e03d4 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 @@ -1,12 +1,14 @@ /* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation + * ============LICENSE_START======================================================= + * Copyright (C) 2020-2022 Nordix Foundation + * Modifications Copyright (C) 2020-2021 Pantheon.tech * ================================================================================ * 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. @@ -19,8 +21,12 @@ package org.onap.cps.api; -import org.onap.cps.spi.exceptions.CpsException; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import java.util.Collection; +import java.util.Map; +import org.onap.cps.spi.CascadeDeleteAllowed; +import org.onap.cps.spi.exceptions.DataInUseException; +import org.onap.cps.spi.model.ModuleReference; +import org.onap.cps.spi.model.SchemaSet; /** * Responsible for managing module sets. @@ -28,11 +34,73 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; public interface CpsModuleService { /** - * Store schema context for a yang model. + * Create schema set. * - * @param schemaContext the schema context - * @param dataspaceName the dataspace name - * @throws CpsException if input data already exists. + * @param dataspaceName dataspace name + * @param schemaSetName schema set name + * @param yangResourcesNameToContentMap yang resources (files) as a mep where key is resource name + * and value is content + */ + void createSchemaSet(String dataspaceName, String schemaSetName, + Map yangResourcesNameToContentMap); + + /** + * Create a schema set from new modules and existing modules. + * @param dataspaceName Dataspace name + * @param schemaSetName schema set name + * @param newModuleNameToContentMap YANG resources map where key is a module name and value is content + * @param moduleReferences List of YANG resources module references of the modules */ - void storeSchemaContext(SchemaContext schemaContext, String dataspaceName); + void createSchemaSetFromModules(String dataspaceName, String schemaSetName, + Map newModuleNameToContentMap, + Collection moduleReferences); + + /** + * Read schema set in the given dataspace. + * + * @param dataspaceName dataspace name + * @param schemaSetName schema set name + * @return a SchemaSet + */ + SchemaSet getSchemaSet(String dataspaceName, String schemaSetName); + + /** + * Deletes Schema Set. + * + * @param dataspaceName dataspace name + * @param schemaSetName schema set name + * @param cascadeDeleteAllowed indicates the allowance to remove associated anchors and data if exist + * @throws DataInUseException if cascadeDeleteAllowed is set to CASCADE_DELETE_PROHIBITED and there + * is associated anchor record exists in database + */ + void deleteSchemaSet(String dataspaceName, String schemaSetName, + CascadeDeleteAllowed cascadeDeleteAllowed); + + /** + * Retrieve module references for the given dataspace name. + * + * @param dataspaceName dataspace name + * @return a list of ModuleReference objects + */ + Collection getYangResourceModuleReferences(String dataspaceName); + + /** + * Retrieve module references for the given dataspace name and anchor name. + * + * @param dataspaceName dataspace name + * @param anchorName anchor name + * @return a list of ModuleReference objects + */ + Collection getYangResourcesModuleReferences(String dataspaceName, String anchorName); + + /** + * Identify previously unknown Yang Resource module references. + * The system will ignore the namespace of all module references. + * + * @param moduleReferencesToCheck the moduleReferencesToCheck + * @returns collection of module references (namespace will be always blank) + */ + Collection identifyNewModuleReferences( + Collection moduleReferencesToCheck); + }