diff options
author | rameshiyer27 <ramesh.murugan.iyer@est.tech> | 2022-02-07 17:07:38 +0000 |
---|---|---|
committer | rameshiyer27 <ramesh.murugan.iyer@est.tech> | 2022-02-10 14:20:42 +0000 |
commit | 45b653fc5a8d641452247eca5c80cf580609e9bf (patch) | |
tree | 06cfd4529db05dc23cbd63d2fe2e53799eb07bdf /models-provider/src/main/java | |
parent | 303d42453fbfcf2381f810b10a496b69aa8bc34b (diff) |
Add policy metadataSet handling as node templates
Each metadataSet is represented as a 'node_template' in Tosca
mapped to a specific node type.
Support added for db operations of node templates as
independent entities.
Detailed documentation available here :
https://wiki.onap.org/display/DW/Enable+Handling+of+Policy+Type+Metadata
Issue-ID: POLICY-3832
Signed-off-by: zrrmmua <ramesh.murugan.iyer@est.tech>
Change-Id: I6c189142b1778ba858aae27cd92d4f136d950208
Diffstat (limited to 'models-provider/src/main/java')
3 files changed, 103 insertions, 302 deletions
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java index 85aab6ec4..5cc5fc96b 100644 --- a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java +++ b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019-2021 Nordix Foundation. + * Copyright (C) 2019-2022 Nordix Foundation. * Modifications Copyright (C) 2020 Bell Canada. All rights reserved. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ @@ -25,8 +25,11 @@ package org.onap.policy.models.provider; import java.time.Instant; import java.util.Collection; import java.util.List; +import java.util.Map; import lombok.NonNull; +import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelException; +import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.pap.concepts.PolicyAudit; import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter; import org.onap.policy.models.pdp.concepts.Pdp; @@ -38,6 +41,8 @@ import org.onap.policy.models.pdp.concepts.PdpSubGroup; import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion; import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter; +import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityKey; +import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; @@ -254,6 +259,59 @@ public interface PolicyModelsProvider extends AutoCloseable { public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version) throws PfModelException; + + /** + * Create tosca node templates. + * + * @param serviceTemplate the definitions of the new node templates to be created. + * @return the tosca node templates that were created + * @throws PfModelException on errors creating tosca node templates + */ + public ToscaServiceTemplate createToscaNodeTemplates(@NonNull final ToscaServiceTemplate serviceTemplate) + throws PfModelException; + + /** + * Update tosca node templates. + * + * @param serviceTemplate with node templates to be updated. + * @return the service template with node templates that were updated + * @throws PfModelException on errors updating tosca node templates + */ + public ToscaServiceTemplate updateToscaNodeTemplates(@NonNull final ToscaServiceTemplate serviceTemplate) + throws PfModelRuntimeException, PfModelException; + + /** + * Delete a tosca node template. + * + * @param name the name of the node template to delete. + * @param version the version of the node template to delete. + * @return the service template with node templates that was deleted + * @throws PfModelException on errors deleting a node template + */ + public ToscaServiceTemplate deleteToscaNodeTemplate(@NonNull final String name, @NonNull final String version) + throws PfModelException; + + + /** + * Get filtered node template metadataSet entities. + * + * @return the list of metadataSet found + * @throws PfModelException on errors getting node template metadataSet + */ + public List<Map<ToscaEntityKey, Map<String, Object>>> getNodeTemplateMetadataSets(final String name, + final String version) + throws PfModelException; + + /** + * Get filtered node template entities. + * + * @return the list of nodeTemplates found + * @throws PfModelException on errors getting node template + */ + public List<Map<PfConceptKey, ToscaNodeTemplate>> getToscaNodeTemplate(final String name, + final String version) + throws PfModelException; + /** * Get PDP groups. * diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java b/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java index fa7658355..ffb470628 100644 --- a/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java +++ b/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,8 +23,10 @@ package org.onap.policy.models.provider.impl; import java.time.Instant; import java.util.Collection; import java.util.List; +import java.util.Map; import javax.ws.rs.core.Response; import lombok.NonNull; +import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.dao.PfDao; @@ -44,6 +46,8 @@ import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion; import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter; +import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityKey; +import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; @@ -194,6 +198,45 @@ public abstract class AbstractPolicyModelsProvider implements PolicyModelsProvid } @Override + public ToscaServiceTemplate createToscaNodeTemplates(@NonNull final ToscaServiceTemplate serviceTemplate) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().createToscaNodeTemplates(getPfDao(), serviceTemplate); + } + + @Override + public ToscaServiceTemplate updateToscaNodeTemplates(@NonNull final ToscaServiceTemplate serviceTemplate) + throws PfModelRuntimeException, PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().updateToscaNodeTemplates(getPfDao(), serviceTemplate); + } + + @Override + public ToscaServiceTemplate deleteToscaNodeTemplate(@NonNull final String name, @NonNull final String version) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().deleteToscaNodeTemplate(getPfDao(), name, version); + } + + @Override + public List<Map<ToscaEntityKey, Map<String, Object>>> getNodeTemplateMetadataSets(final String name, + final String version) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().getNodeTemplateMetadataSet(getPfDao(), name, version); + } + + @Override + public List<Map<PfConceptKey, ToscaNodeTemplate>> getToscaNodeTemplate(final String name, + final String version) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().getToscaNodeTemplate(getPfDao(), name, version); + } + + + + @Override public List<PdpGroup> getPdpGroups(final String name) throws PfModelException { assertInitialized(); return new PdpProvider().getPdpGroups(getPfDao(), name); diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java deleted file mode 100644 index b9b34a24d..000000000 --- a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java +++ /dev/null @@ -1,300 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019-2021 Nordix Foundation. - * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2020 Bell Canada. All rights reserved. - * ================================================================================ - * 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.policy.models.provider.impl; - -import java.time.Instant; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import javax.ws.rs.core.Response; -import lombok.NonNull; -import org.onap.policy.common.utils.coder.StandardCoder; -import org.onap.policy.common.utils.resources.ResourceUtils; -import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.pap.concepts.PolicyAudit; -import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter; -import org.onap.policy.models.pdp.concepts.Pdp; -import org.onap.policy.models.pdp.concepts.PdpGroup; -import org.onap.policy.models.pdp.concepts.PdpGroupFilter; -import org.onap.policy.models.pdp.concepts.PdpPolicyStatus; -import org.onap.policy.models.pdp.concepts.PdpStatistics; -import org.onap.policy.models.pdp.concepts.PdpSubGroup; -import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters; -import org.onap.policy.models.provider.PolicyModelsProvider; -import org.onap.policy.models.provider.PolicyModelsProviderParameters; -import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion; -import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; -import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter; - -/** - * This class provides a dummy implementation of the Policy Models Provider for the ONAP Policy Framework. - * - * @author Liam Fallon (liam.fallon@est.tech) - * @author Chenfei Gao (cgao@research.att.com) - */ -public class DummyPolicyModelsProviderImpl implements PolicyModelsProvider { - /** - * Constructor that takes the parameters. - * - * @param parameters the parameters for the provider - */ - public DummyPolicyModelsProviderImpl(final PolicyModelsProviderParameters parameters) { - // Default constructor - } - - @Override - public void init() throws PfModelException { - // Not required on the dummy provider - } - - @Override - public void close() { - // Not required on the dummy provider - } - - - @Override - public List<ToscaServiceTemplate> getServiceTemplateList(String name, String version) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public List<ToscaServiceTemplate> getFilteredServiceTemplateList( - @NonNull ToscaEntityFilter<ToscaServiceTemplate> filter) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public ToscaServiceTemplate createServiceTemplate(@NonNull ToscaServiceTemplate serviceTemplate) - throws PfModelException { - return serviceTemplate; - } - - @Override - public ToscaServiceTemplate updateServiceTemplate(@NonNull ToscaServiceTemplate serviceTemplate) - throws PfModelException { - return serviceTemplate; - } - - @Override - public ToscaServiceTemplate deleteServiceTemplate(@NonNull String name, @NonNull String version) - throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaServiceTemplateDeleteResponse.json"); - } - - @Override - public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaPolicyTypeGetResponse.json"); - } - - @Override - public List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public ToscaServiceTemplate getFilteredPolicyTypes(ToscaEntityFilter<ToscaPolicyType> filter) - throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaPolicyTypeGetResponse.json"); - } - - @Override - public List<ToscaPolicyType> getFilteredPolicyTypeList(ToscaEntityFilter<ToscaPolicyType> filter) { - return new ArrayList<>(); - } - - @Override - public ToscaServiceTemplate createPolicyTypes(final ToscaServiceTemplate serviceTemplate) throws PfModelException { - return serviceTemplate; - } - - @Override - public ToscaServiceTemplate updatePolicyTypes(final ToscaServiceTemplate serviceTemplate) throws PfModelException { - return serviceTemplate; - } - - @Override - public ToscaServiceTemplate deletePolicyType(final String name, final String version) throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaPolicyTypeDeleteResponse.json"); - } - - @Override - public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaPolicyGetResponse.json"); - } - - @Override - public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public ToscaServiceTemplate getFilteredPolicies(ToscaTypedEntityFilter<ToscaPolicy> filter) - throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaPolicyGetResponse.json"); - } - - @Override - public List<ToscaPolicy> getFilteredPolicyList(ToscaTypedEntityFilter<ToscaPolicy> filter) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public ToscaServiceTemplate createPolicies(final ToscaServiceTemplate serviceTemplate) throws PfModelException { - return serviceTemplate; - } - - @Override - public ToscaServiceTemplate updatePolicies(final ToscaServiceTemplate serviceTemplate) throws PfModelException { - return serviceTemplate; - } - - @Override - public ToscaServiceTemplate deletePolicy(final String name, final String version) throws PfModelException { - return getDummyResponse("dummyimpl/DummyToscaPolicyDeleteResponse.json"); - } - - @Override - public List<PdpGroup> getPdpGroups(final String name) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public List<PdpGroup> getFilteredPdpGroups(PdpGroupFilter filter) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public List<PdpGroup> createPdpGroups(final List<PdpGroup> pdpGroups) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public List<PdpGroup> updatePdpGroups(final List<PdpGroup> pdpGroups) throws PfModelException { - return new ArrayList<>(); - } - - @Override - public void updatePdpSubGroup(final String pdpGroupName, final PdpSubGroup pdpSubGroup) throws PfModelException { - // Not implemented - } - - @Override - public void updatePdp(String pdpGroupName, String pdpSubGroup, Pdp pdp) throws PfModelException { - // Not implemented - } - - @Override - public PdpGroup deletePdpGroup(final String name) throws PfModelException { - return null; - } - - @Override - public List<PdpStatistics> getFilteredPdpStatistics(PdpFilterParameters filterParams) throws PfModelException { - // Not implemented - return new ArrayList<>(); - } - - @Override - public List<PdpStatistics> createPdpStatistics(final List<PdpStatistics> pdpStatisticsList) - throws PfModelException { - // Not implemented - return new ArrayList<>(); - } - - @Override - public List<PdpStatistics> updatePdpStatistics(final List<PdpStatistics> pdpStatisticsList) - throws PfModelException { - // Not implemented - return new ArrayList<>(); - } - - @Override - public List<PdpStatistics> deletePdpStatistics(final String name, final Instant timestamp) { - // Not implemented - return new ArrayList<>(); - } - - @Override - public List<PdpPolicyStatus> getAllPolicyStatus() throws PfModelException { - // Not implemented - return new ArrayList<>(); - } - - @Override - public List<PdpPolicyStatus> getAllPolicyStatus(@NonNull ToscaConceptIdentifierOptVersion policy) - throws PfModelException { - // Not implemented - return new ArrayList<>(); - } - - @Override - public List<PdpPolicyStatus> getGroupPolicyStatus(String groupName) throws PfModelException { - // Not implemented - return new ArrayList<>(); - } - - @Override - public void cudPolicyStatus(Collection<PdpPolicyStatus> createObjs, Collection<PdpPolicyStatus> updateObjs, - Collection<PdpPolicyStatus> deleteObjs) { - // Not implemented - } - - @Override - public void createAuditRecords(List<PolicyAudit> auditRecords) { - // Not implemented - } - - @Override - public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter) { - // Not implemented - return new ArrayList<>(); - } - - /** - * Return a ToscaServicetemplate dummy response. - * - * @param fileName the file name containing the dummy response - * @return the ToscaServiceTemplate with the dummy response - */ - protected ToscaServiceTemplate getDummyResponse(final String fileName) { - var standardCoder = new StandardCoder(); - ToscaServiceTemplate serviceTemplate; - - try { - serviceTemplate = - standardCoder.decode(ResourceUtils.getResourceAsString(fileName), ToscaServiceTemplate.class); - if (serviceTemplate == null) { - throw new PfModelException(Response.Status.INTERNAL_SERVER_ERROR, "error reading specified file"); - } - } catch (Exception exc) { - throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "error serializing object", exc); - } - - return serviceTemplate; - } -} |