/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
+ * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021 AT&T Intellectual Property. 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.
package org.onap.policy.models.provider;
-import java.util.Map;
-
+import java.time.Instant;
+import java.util.Collection;
+import java.util.List;
import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pdp.concepts.PdpGroups;
-import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
-import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
-import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
+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.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 interface describes the operations that are provided to users and components for reading objects from and
*/
public void init() throws PfModelException;
+ @Override
+ public void close() throws PfModelException;
+
+ /**
+ * Get service templates.
+ *
+ * @param name the name of the topology template to get, set to null to get all service templates
+ * @param version the version of the service template to get, set to null to get all service templates
+ * @return the topology templates found
+ * @throws PfModelException on errors getting service templates
+ */
+ public List<ToscaServiceTemplate> getServiceTemplateList(final String name, final String version)
+ throws PfModelException;
+
+ /**
+ * Get filtered service templates.
+ *
+ * @param filter the filter for the service templates to get
+ * @return the service templates found
+ * @throws PfModelException on errors getting service templates
+ */
+ public List<ToscaServiceTemplate> getFilteredServiceTemplateList(
+ @NonNull final ToscaEntityFilter<ToscaServiceTemplate> filter) throws PfModelException;
+
+ /**
+ * Create service template.
+ *
+ * @param serviceTemplate the service template to be created
+ * @return the created service template
+ * @throws PfModelException on errors creating the service template
+ */
+ public ToscaServiceTemplate createServiceTemplate(@NonNull final ToscaServiceTemplate serviceTemplate)
+ throws PfModelException;
+
+ /**
+ * Update service template.
+ *
+ * @param serviceTemplate the service template to be updated
+ * @return the updated service template
+ * @throws PfModelException on errors updating the service template
+ */
+ public ToscaServiceTemplate updateServiceTemplate(@NonNull final ToscaServiceTemplate serviceTemplate)
+ throws PfModelException;
+
+ /**
+ * Delete service template.
+ *
+ * @param name the name of the service template to delete.
+ * @param version the version of the service template to delete.
+ * @return the TOSCA service template that was deleted
+ * @throws PfModelException on errors deleting policy types
+ */
+ public ToscaServiceTemplate deleteServiceTemplate(@NonNull final String name, @NonNull final String version)
+ throws PfModelException;
+
/**
* Get policy types.
*
- * @param policyTypeKey the policy type key for the policy types to be retrieved. A null key name returns all policy
- * types. A null key version returns all versions of the policy type name specified in the key.
+ * @param name the name of the policy type to get, set to null to get all policy types
+ * @param version the version of the policy type to get, set to null to get all versions
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfConceptKey policyTypeKey) throws PfModelException;
+ public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get policy types.
+ *
+ * @param name the name of the policy type to get, set to null to get all policy types
+ * @param version the version of the policy type to get, set to null to get all versions
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get filtered policy types.
+ *
+ * @param filter the filter for the policy types to get
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull final ToscaEntityFilter<ToscaPolicyType> filter)
+ throws PfModelException;
+
+ /**
+ * Get filtered policy types.
+ *
+ * @param filter the filter for the policy types to get
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public List<ToscaPolicyType> getFilteredPolicyTypeList(@NonNull final ToscaEntityFilter<ToscaPolicyType> filter)
+ throws PfModelException;
/**
* Create policy types.
* @return the TOSCA service template containing the created policy types
* @throws PfModelException on errors creating policy types
*/
- public JpaToscaServiceTemplate createPolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
/**
- * Create policy types.
+ * Update policy types.
*
* @param serviceTemplate the service template containing the definition of the policy types to be modified
* @return the TOSCA service template containing the modified policy types
* @throws PfModelException on errors updating policy types
*/
- public JpaToscaServiceTemplate updatePolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
/**
- * Delete policy types.
+ * Delete policy type.
*
- * @param policyTypeKey the policy type key for the policy types to be deleted, if the version of the key is null,
- * all versions of the policy type are deleted.
- * @return the TOSCA service template containing the policy types that were deleted
- * @throws PfModelException on errors deleting policy types
+ * @param name the name of the policy type to delete.
+ * @param version the version of the policy type to delete.
+ * @return the TOSCA service template containing the policy type that was deleted
+ * @throws PfModelException on errors deleting the policy type
+ */
+ public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version)
+ throws PfModelException;
+
+ /**
+ * Get policies.
+ *
+ * @param name the name of the policy to get, null to get all policies
+ * @param version the version of the policy to get, null to get all versions of a policy
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
*/
- public JpaToscaServiceTemplate deletePolicyTypes(@NonNull final PfConceptKey policyTypeKey) throws PfModelException;
+ public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException;
/**
* Get policies.
*
- * @param policyKey the policy key for the policies to be retrieved. The parent name and version must be specified.
- * A null local name returns all policies for a parent policy type.
+ * @param name the name of the policy to get, null to get all policies
+ * @param version the version of the policy to get, null to get all versions of a policy
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get filtered policies.
+ *
+ * @param filter the filter for the policies to get
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public JpaToscaServiceTemplate getPolicies(@NonNull final PfConceptKey policyKey) throws PfModelException;
+ public ToscaServiceTemplate getFilteredPolicies(@NonNull final ToscaTypedEntityFilter<ToscaPolicy> filter)
+ throws PfModelException;
+
+ /**
+ * Get filtered policies.
+ *
+ * @param filter the filter for the policies to get
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public List<ToscaPolicy> getFilteredPolicyList(@NonNull final ToscaTypedEntityFilter<ToscaPolicy> filter)
+ throws PfModelException;
/**
* Create policies.
* @return the TOSCA service template containing the policy types that were created
* @throws PfModelException on errors creating policies
*/
- public JpaToscaServiceTemplate createPolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
-
/**
* Update policies.
*
* @return the TOSCA service template containing the policies that were updated
* @throws PfModelException on errors updating policies
*/
- public JpaToscaServiceTemplate updatePolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
/**
- * Delete policies.
+ * Delete policy.
*
- * @param policyKey the policy key
- * @return the TOSCA service template containing the policy types that were deleted
- * @throws PfModelException on errors deleting policies
+ * @param name the name of the policy to delete.
+ * @param version the version of the policy to delete.
+ * @return the TOSCA service template containing the policy that was deleted
+ * @throws PfModelException on errors deleting a policy
*/
- public JpaToscaServiceTemplate deletePolicies(@NonNull final PfConceptKey policyKey) throws PfModelException;
+ public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version)
+ throws PfModelException;
/**
- * Get legacy operational policy.
+ * Get PDP groups.
*
- * @param policyId ID of the policy.
- * @return the policies found
+ * @param name the name of the policy to get, null to get all PDP groups
+ * @return the PDP groups found
+ * @throws PfModelException on errors getting PDP groups
+ */
+ public List<PdpGroup> getPdpGroups(final String name) throws PfModelException;
+
+ /**
+ * Get filtered PDP groups.
+ *
+ * @param filter the filter for the PDP groups to get
+ * @return the PDP groups found
* @throws PfModelException on errors getting policies
*/
- public LegacyOperationalPolicy getOperationalPolicy(@NonNull final String policyId) throws PfModelException;
+ public List<PdpGroup> getFilteredPdpGroups(@NonNull final PdpGroupFilter filter) throws PfModelException;
/**
- * Create legacy operational policy.
+ * Creates PDP groups.
*
- * @param legacyOperationalPolicy the definition of the policy to be created.
- * @return the created policy
- * @throws PfModelException on errors creating policies
+ * @param pdpGroups a specification of the PDP groups to create
+ * @return the PDP groups created
+ * @throws PfModelException on errors creating PDP groups
*/
- public LegacyOperationalPolicy createOperationalPolicy(
- @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException;
+ public List<PdpGroup> createPdpGroups(@NonNull final List<PdpGroup> pdpGroups) throws PfModelException;
/**
- * Update legacy operational policy.
+ * Updates PDP groups.
*
- * @param legacyOperationalPolicy the definition of the policy to be updated
- * @return the updated policy
- * @throws PfModelException on errors updating policies
+ * @param pdpGroups a specification of the PDP groups to update
+ * @return the PDP groups updated
+ * @throws PfModelException on errors updating PDP groups
*/
- public LegacyOperationalPolicy updateOperationalPolicy(
- @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException;
+ public List<PdpGroup> updatePdpGroups(@NonNull final List<PdpGroup> pdpGroups) throws PfModelException;
/**
- * Delete legacy operational policy.
+ * Update a PDP subgroup.
*
- * @param policyId ID of the policy.
- * @return the deleted policy
- * @throws PfModelException on errors deleting policies
+ * @param pdpGroupName the name of the PDP group of the PDP subgroup
+ * @param pdpSubGroup the PDP subgroup to be updated
+ * @throws PfModelException on errors updating PDP subgroups
*/
- public LegacyOperationalPolicy deleteOperationalPolicy(@NonNull final String policyId) throws PfModelException;
+ public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final PdpSubGroup pdpSubGroup)
+ throws PfModelException;
/**
- * Get legacy guard policy.
+ * Update a PDP.
*
- * @param policyId ID of the policy.
- * @return the policies found
- * @throws PfModelException on errors getting policies
+ * @param pdpGroupName the name of the PDP group of the PDP subgroup
+ * @param pdpSubGroup the PDP subgroup to be updated
+ * @param pdp the PDP to be updated
+ * @throws PfModelException on errors updating PDP subgroups
*/
- public Map<String, LegacyGuardPolicyOutput> getGuardPolicy(@NonNull final String policyId) throws PfModelException;
+ public void updatePdp(@NonNull final String pdpGroupName, @NonNull final String pdpSubGroup, @NonNull final Pdp pdp)
+ throws PfModelException;
/**
- * Create legacy guard policy.
+ * Delete a PDP group.
*
- * @param legacyGuardPolicy the definition of the policy to be created.
- * @return the created policy
- * @throws PfModelException on errors creating policies
+ * @param name the name of the policy to get, null to get all PDP groups
+ * @return the PDP group deleted
+ * @throws PfModelException on errors deleting PDP groups
*/
- public Map<String, LegacyGuardPolicyOutput> createGuardPolicy(
- @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException;
+ public PdpGroup deletePdpGroup(@NonNull final String name) throws PfModelException;
/**
- * Update legacy guard policy.
+ * Get PDP statistics.
*
- * @param legacyGuardPolicy the definition of the policy to be updated
- * @return the updated policy
- * @throws PfModelException on errors updating policies
+ * @param name the name of the PDP group to get statistics for, null to get all PDP groups
+ * @return the statistics found
+ * @throws PfModelException on errors getting statistics
+ */
+ public List<PdpStatistics> getPdpStatistics(final String name, final Instant timestamp) throws PfModelException;
+
+
+ /**
+ * Get filtered PdpStatistics.
+ *
+ * @param name the pdpInstance name for the PDP statistics to get
+ * @param pdpGroupName pdpGroupName to filter statistics
+ * @param pdpSubGroup pdpSubGroupType name to filter statistics
+ * @param startTimeStamp startTimeStamp to filter statistics
+ * @param endTimeStamp endTimeStamp to filter statistics
+ * @param sortOrder sortOrder to query database
+ * @param getRecordNum Total query count from database
+ * @return the PDP statistics found
+ * @throws PfModelException on errors getting policies
*/
- public Map<String, LegacyGuardPolicyOutput> updateGuardPolicy(
- @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException;
+ public List<PdpStatistics> getFilteredPdpStatistics(String name, @NonNull String pdpGroupName, String pdpSubGroup,
+ Instant startTimeStamp, Instant endTimeStamp, String sortOrder, int getRecordNum) throws PfModelException;
/**
- * Delete legacy guard policy.
+ * Creates PDP statistics.
*
- * @param policyId ID of the policy.
- * @return the deleted policy
- * @throws PfModelException on errors deleting policies
+ * @param pdpStatisticsList a specification of the PDP statistics to create
+ * @return the PDP statistics created
+ * @throws PfModelException on errors creating PDP statistics
*/
- public Map<String, LegacyGuardPolicyOutput> deleteGuardPolicy(@NonNull final String policyId)
+ public List<PdpStatistics> createPdpStatistics(@NonNull List<PdpStatistics> pdpStatisticsList)
throws PfModelException;
/**
- * Get PDP groups.
+ * Updates PDP statistics.
*
- * @param pdpGroupFilter a filter for the get
- * @return the PDP groups found
+ * @param pdpStatisticsList a specification of the PDP statistics to update
+ * @return the PDP statistics updated
+ * @throws PfModelException on errors updating PDP statistics
+ */
+ public List<PdpStatistics> updatePdpStatistics(@NonNull List<PdpStatistics> pdpStatisticsList)
+ throws PfModelException;
+
+ /**
+ * Delete a PDP statistics.
+ *
+ * @param name the name of the policy to get, null to get all PDP statistics
+ * @param timestamp the timestamp of statistics to delete, null to delete all statistics record of given pdp
+ * @return the PDP statistics deleted
+ * @throws PfModelException on errors deleting PDP statistics
+ */
+ public List<PdpStatistics> deletePdpStatistics(@NonNull String name, Instant timestamp) throws PfModelException;
+
+ /**
+ * Gets all policy deployments.
+ *
+ * @return the deployments found
* @throws PfModelException on errors getting PDP groups
*/
- public PdpGroups getPdpGroups(@NonNull final String pdpGroupFilter) throws PfModelException;
+ public List<PdpPolicyStatus> getAllPolicyStatus() throws PfModelException;
/**
- * Creates PDP groups.
+ * Gets all deployments for a policy.
*
- * @param pdpGroups a specification of the PDP groups to create
- * @return the PDP groups created
- * @throws PfModelException on errors creating PDP groups
+ * @return the deployments found
+ * @throws PfModelException on errors getting PDP groups
*/
- public PdpGroups createPdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException;
+ public List<PdpPolicyStatus> getAllPolicyStatus(@NonNull ToscaConceptIdentifierOptVersion policy)
+ throws PfModelException;
/**
- * Updates PDP groups.
+ * Gets the policy deployments for a PDP group.
*
- * @param pdpGroups a specification of the PDP groups to update
- * @return the PDP groups updated
- * @throws PfModelException on errors updating PDP groups
+ * @param groupName the name of the PDP group of interest, null to get results for all PDP groups
+ * @return the deployments found
+ * @throws PfModelException on errors getting PDP groups
*/
- public PdpGroups updatePdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException;
+ public List<PdpPolicyStatus> getGroupPolicyStatus(@NonNull final String groupName) throws PfModelException;
/**
- * Delete PDP groups.
+ * Creates, updates, and deletes collections of policy status.
*
- * @param pdpGroupFilter a filter for the get
- * @return the PDP groups deleted
- * @throws PfModelException on errors deleting PDP groups
+ * @param createObjs the objects to create
+ * @param updateObjs the objects to update
+ * @param deleteObjs the objects to delete
*/
- public PdpGroups deletePdpGroups(@NonNull final String pdpGroupFilter) throws PfModelException;
+ public void cudPolicyStatus(Collection<PdpPolicyStatus> createObjs, Collection<PdpPolicyStatus> updateObjs,
+ Collection<PdpPolicyStatus> deleteObjs);
}