Add version on legacy get/delete
[policy/models.git] / models-provider / src / main / java / org / onap / policy / models / provider / PolicyModelsProvider.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.models.provider;
22
23 import java.util.List;
24 import java.util.Map;
25
26 import lombok.NonNull;
27
28 import org.onap.policy.models.base.PfModelException;
29 import org.onap.policy.models.pdp.concepts.Pdp;
30 import org.onap.policy.models.pdp.concepts.PdpGroup;
31 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
32 import org.onap.policy.models.pdp.concepts.PdpStatistics;
33 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
34 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
35 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter;
36 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
37 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter;
38 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
39 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
40 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
41 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
42
43 /**
44  * This interface describes the operations that are provided to users and components for reading objects from and
45  * writing objects to the database.
46  *
47  * @author Liam Fallon (liam.fallon@est.tech)
48  */
49 public interface PolicyModelsProvider extends AutoCloseable {
50     /**
51      * Open the policy model provider initializing whatever internal handling it needs.
52      *
53      * @throws PfModelException on errors opening the models provider
54      */
55     public void init() throws PfModelException;
56
57     @Override
58     public void close() throws PfModelException;
59
60     /**
61      * Get policy types.
62      *
63      * @param name the name of the policy type to get, set to null to get all policy types
64      * @param version the version of the policy type to get, set to null to get all versions
65      * @return the policy types found
66      * @throws PfModelException on errors getting policy types
67      */
68     public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException;
69
70     /**
71      * Get policy types.
72      *
73      * @param name the name of the policy type to get, set to null to get all policy types
74      * @param version the version of the policy type to get, set to null to get all versions
75      * @return the policy types found
76      * @throws PfModelException on errors getting policy types
77      */
78     public List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException;
79
80     /**
81      * Get filtered policy types.
82      *
83      * @param filter the filter for the policy types to get
84      * @return the policy types found
85      * @throws PfModelException on errors getting policy types
86      */
87     public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull final ToscaPolicyTypeFilter filter)
88             throws PfModelException;
89
90     /**
91      * Get filtered policy types.
92      *
93      * @param filter the filter for the policy types to get
94      * @return the policy types found
95      * @throws PfModelException on errors getting policy types
96      */
97     public List<ToscaPolicyType> getFilteredPolicyTypeList(@NonNull final ToscaPolicyTypeFilter filter)
98             throws PfModelException;
99
100     /**
101      * Create policy types.
102      *
103      * @param serviceTemplate the service template containing the definition of the policy types to be created
104      * @return the TOSCA service template containing the created policy types
105      * @throws PfModelException on errors creating policy types
106      */
107     public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
108             throws PfModelException;
109
110     /**
111      * Create policy types.
112      *
113      * @param serviceTemplate the service template containing the definition of the policy types to be modified
114      * @return the TOSCA service template containing the modified policy types
115      * @throws PfModelException on errors updating policy types
116      */
117     public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
118             throws PfModelException;
119
120     /**
121      * Delete policy type.
122      *
123      * @param name the name of the policy type to delete.
124      * @param version the version of the policy type to delete.
125      * @return the TOSCA service template containing the policy type that was deleted
126      * @throws PfModelException on errors deleting policy types
127      */
128     public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version)
129             throws PfModelException;
130
131     /**
132      * Get policies.
133      *
134      * @param name the name of the policy to get, null to get all policies
135      * @param version the version of the policy to get, null to get all versions of a policy
136      * @return the policies found
137      * @throws PfModelException on errors getting policies
138      */
139     public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException;
140
141     /**
142      * Get policies.
143      *
144      * @param name the name of the policy to get, null to get all policies
145      * @param version the version of the policy to get, null to get all versions of a policy
146      * @return the policies found
147      * @throws PfModelException on errors getting policies
148      */
149     public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException;
150
151     /**
152      * Get filtered policies.
153      *
154      * @param filter the filter for the policies to get
155      * @return the policies found
156      * @throws PfModelException on errors getting policies
157      */
158     public ToscaServiceTemplate getFilteredPolicies(@NonNull final ToscaPolicyFilter filter) throws PfModelException;
159
160     /**
161      * Get filtered policies.
162      *
163      * @param filter the filter for the policies to get
164      * @return the policies found
165      * @throws PfModelException on errors getting policies
166      */
167     public List<ToscaPolicy> getFilteredPolicyList(@NonNull final ToscaPolicyFilter filter) throws PfModelException;
168
169     /**
170      * Create policies.
171      *
172      * @param serviceTemplate the service template containing the definitions of the new policies to be created.
173      * @return the TOSCA service template containing the policy types that were created
174      * @throws PfModelException on errors creating policies
175      */
176     public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
177             throws PfModelException;
178
179     /**
180      * Update policies.
181      *
182      * @param serviceTemplate the service template containing the definitions of the policies to be updated.
183      * @return the TOSCA service template containing the policies that were updated
184      * @throws PfModelException on errors updating policies
185      */
186     public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
187             throws PfModelException;
188
189     /**
190      * Delete policy.
191      *
192      * @param name the name of the policy to delete.
193      * @param version the version of the policy to delete.
194      * @return the TOSCA service template containing the policy that was deleted
195      * @throws PfModelException on errors deleting a policy
196      */
197     public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version)
198             throws PfModelException;
199
200     /**
201      * Get legacy operational policy.
202      *
203      * @param policyId ID of the policy
204      * @param policyVersion version of the policy, set to null to get the latest policy
205      * @return the policies found
206      * @throws PfModelException on errors getting policies
207      */
208     public LegacyOperationalPolicy getOperationalPolicy(@NonNull final String policyId, final String policyVersion)
209             throws PfModelException;
210
211     /**
212      * Create legacy operational policy.
213      *
214      * @param legacyOperationalPolicy the definition of the policy to be created.
215      * @return the created policy
216      * @throws PfModelException on errors creating policies
217      */
218     public LegacyOperationalPolicy createOperationalPolicy(
219             @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException;
220
221     /**
222      * Update legacy operational policy.
223      *
224      * @param legacyOperationalPolicy the definition of the policy to be updated
225      * @return the updated policy
226      * @throws PfModelException on errors updating policies
227      */
228     public LegacyOperationalPolicy updateOperationalPolicy(
229             @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException;
230
231     /**
232      * Delete legacy operational policy.
233      *
234      * @param policyId ID of the policy.
235      * @param policyVersion version of the policy, set to null to get the latest policy
236      * @return the deleted policy
237      * @throws PfModelException on errors deleting policies
238      */
239     public LegacyOperationalPolicy deleteOperationalPolicy(@NonNull final String policyId,
240             @NonNull final String policyVersion) throws PfModelException;
241
242     /**
243      * Get legacy guard policy.
244      *
245      * @param policyId ID of the policy
246      * @param policyVersion version of the policy, set to null to get the latest policy
247      * @return the policies found
248      * @throws PfModelException on errors getting policies
249      */
250     public Map<String, LegacyGuardPolicyOutput> getGuardPolicy(@NonNull final String policyId,
251             final String policyVersion) throws PfModelException;
252
253     /**
254      * Create legacy guard policy.
255      *
256      * @param legacyGuardPolicy the definition of the policy to be created.
257      * @return the created policy
258      * @throws PfModelException on errors creating policies
259      */
260     public Map<String, LegacyGuardPolicyOutput> createGuardPolicy(
261             @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException;
262
263     /**
264      * Update legacy guard policy.
265      *
266      * @param legacyGuardPolicy the definition of the policy to be updated
267      * @return the updated policy
268      * @throws PfModelException on errors updating policies
269      */
270     public Map<String, LegacyGuardPolicyOutput> updateGuardPolicy(
271             @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException;
272
273     /**
274      * Delete legacy guard policy.
275      *
276      * @param policyId ID of the policy.
277      * @param policyVersion version of the policy, set to null to get the latest policy
278      * @return the deleted policy
279      * @throws PfModelException on errors deleting policies
280      */
281     public Map<String, LegacyGuardPolicyOutput> deleteGuardPolicy(@NonNull final String policyId,
282             @NonNull final String policyVersion) throws PfModelException;
283
284     /**
285      * Get PDP groups.
286      *
287      * @param name the name of the policy to get, null to get all PDP groups
288      * @return the PDP groups found
289      * @throws PfModelException on errors getting PDP groups
290      */
291     public List<PdpGroup> getPdpGroups(final String name) throws PfModelException;
292
293     /**
294      * Get filtered PDP groups.
295      *
296      * @param filter the filter for the PDP groups to get
297      * @return the PDP groups found
298      * @throws PfModelException on errors getting policies
299      */
300     public List<PdpGroup> getFilteredPdpGroups(@NonNull final PdpGroupFilter filter) throws PfModelException;
301
302     /**
303      * Creates PDP groups.
304      *
305      * @param pdpGroups a specification of the PDP groups to create
306      * @return the PDP groups created
307      * @throws PfModelException on errors creating PDP groups
308      */
309     public List<PdpGroup> createPdpGroups(@NonNull final List<PdpGroup> pdpGroups) throws PfModelException;
310
311     /**
312      * Updates PDP groups.
313      *
314      * @param pdpGroups a specification of the PDP groups to update
315      * @return the PDP groups updated
316      * @throws PfModelException on errors updating PDP groups
317      */
318     public List<PdpGroup> updatePdpGroups(@NonNull final List<PdpGroup> pdpGroups) throws PfModelException;
319
320     /**
321      * Update a PDP subgroup.
322      *
323      * @param pdpGroupName the name of the PDP group of the PDP subgroup
324      * @param pdpSubGroup the PDP subgroup to be updated
325      * @throws PfModelException on errors updating PDP subgroups
326      */
327     public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final PdpSubGroup pdpSubGroup)
328             throws PfModelException;
329
330     /**
331      * Update a PDP.
332      *
333      * @param pdpGroupName the name of the PDP group of the PDP subgroup
334      * @param pdpSubGroup the PDP subgroup to be updated
335      * @param pdp the PDP to be updated
336      * @throws PfModelException on errors updating PDP subgroups
337      */
338     public void updatePdp(@NonNull final String pdpGroupName, @NonNull final String pdpSubGroup, @NonNull final Pdp pdp)
339             throws PfModelException;
340
341     /**
342      * Delete a PDP group.
343      *
344      * @param name the name of the policy to get, null to get all PDP groups
345      * @return the PDP group deleted
346      * @throws PfModelException on errors deleting PDP groups
347      */
348     public PdpGroup deletePdpGroup(@NonNull final String name) throws PfModelException;
349
350     /**
351      * Get PDP statistics.
352      *
353      * @param name the name of the PDP group to get statistics for, null to get all PDP groups
354      * @return the statistics found
355      * @throws PfModelException on errors getting statistics
356      */
357     public List<PdpStatistics> getPdpStatistics(final String name) throws PfModelException;
358
359     /**
360      * Update PDP statistics for a PDP.
361      *
362      * @param pdpGroupName the name of the PDP group containing the PDP that the statistics are for
363      * @param pdpType the PDP type of the subgroup containing the PDP that the statistics are for
364      * @param pdpInstanceId the instance ID of the PDP to update statistics for
365      * @param pdpStatistics the PDP statistics
366      * @throws PfModelException on errors updating statistics
367      */
368     public void updatePdpStatistics(@NonNull final String pdpGroupName, @NonNull final String pdpType,
369             @NonNull final String pdpInstanceId, @NonNull final PdpStatistics pdpStatistics) throws PfModelException;
370 }