aboutsummaryrefslogtreecommitdiffstats
path: root/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java
blob: aaca2ee5b58911a947f7ae7bab85e17551fae006 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2020-2023 Nordix Foundation
 *  Modifications Copyright (C) 2020-2022 Bell Canada.
 *  Modifications Copyright (C) 2022 TechMahindra Ltd.
 *  ================================================================================
 *  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.spi;

import java.util.Collection;
import java.util.Map;
import org.onap.cps.spi.model.ModuleDefinition;
import org.onap.cps.spi.model.ModuleReference;
import org.onap.cps.spi.model.SchemaSet;

/**
 * Service to manage modules.
 */
public interface CpsModulePersistenceService {

    /**
     * Stores Schema Set.
     *
     * @param dataspaceName                 dataspace name
     * @param schemaSetName                 schema set name
     * @param yangResourcesNameToContentMap YANG resources (files) map where key is a name and value is content
     */
    void storeSchemaSet(String dataspaceName, String schemaSetName, Map<String, String> yangResourcesNameToContentMap);

    /**
     * Stores a new 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 allModuleReferences       All YANG resources module references
     */
    void storeSchemaSetFromModules(String dataspaceName, String schemaSetName,
        Map<String, String> newModuleNameToContentMap, Collection<ModuleReference> allModuleReferences);

    /**
     * Update an existing 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 allModuleReferences       All YANG resources module references
     */
    void updateSchemaSetFromModules(final String dataspaceName, final String schemaSetName,
                                    final Map<String, String> newModuleNameToContentMap,
                                    final Collection<ModuleReference> allModuleReferences);


    /**
     * Get all schema sets for a given dataspace.
     *
     * @param dataspaceName dataspace name.
     * @return List of schema sets
     */
    Collection<SchemaSet> getSchemaSetsByDataspaceName(String dataspaceName);

    /**
     * Deletes Schema Set.
     *
     * @param dataspaceName dataspace name
     * @param schemaSetName schema set name
     */
    void deleteSchemaSet(String dataspaceName, String schemaSetName);

    /**
     * Deletes Schema Sets.
     *
     * @param dataspaceName  dataspace name
     * @param schemaSetNames schema set names
     */
    void deleteSchemaSets(String dataspaceName, Collection<String> schemaSetNames);

    /**
     * Returns YANG resources per specific dataspace / schemaSetName.
     *
     * @param dataspaceName dataspace name
     * @param schemaSetName schema set name
     * @return YANG resources (files) map where key is a name and value is content
     */
    Map<String, String> getYangSchemaResources(String dataspaceName, String schemaSetName);

    /**
     * Returns YANG resources module references for the given dataspace name.
     *
     * @param dataspaceName dataspace name
     * @return Collection of all YANG resources module information in the database
     */
    Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName);

    /**
     * Get YANG resource module references for the given anchor name and dataspace name.
     *
     * @param dataspaceName dataspace name
     * @param anchorName    anchor name
     * @return a collection of module reference (moduleName and revision)
     */
    Collection<ModuleReference> getYangResourceModuleReferences(String dataspaceName, String anchorName);

    /**
     * Get YANG resource definitions for the given anchor name and dataspace name.
     *
     * @param dataspaceName dataspace name
     * @param anchorName    anchor name
     * @return a collection of module definitions (moduleName, revision and yang resource content)
     */
    Collection<ModuleDefinition> getYangResourceDefinitions(String dataspaceName, String anchorName);

    /**
     * Remove unused Yang Resource Modules.
     */
    void deleteUnusedYangResourceModules();

    /**
     * Identify new module references from those returned by a node compared to what is in CPS already.
     * The system will ignore the namespace of all module references.
     *
     * @param moduleReferencesToCheck the module references ot check
     * @returns Collection of {@link ModuleReference} (namespace will be always blank)
     *
     */
    Collection<ModuleReference> identifyNewModuleReferences(
        Collection<ModuleReference> moduleReferencesToCheck);

}