diff options
Diffstat (limited to 'services/services-onappf/src/main/java/org/onap/policy/apex/starter/handler/PdpMessageHandler.java')
-rw-r--r-- | services/services-onappf/src/main/java/org/onap/policy/apex/starter/handler/PdpMessageHandler.java | 96 |
1 files changed, 82 insertions, 14 deletions
diff --git a/services/services-onappf/src/main/java/org/onap/policy/apex/starter/handler/PdpMessageHandler.java b/services/services-onappf/src/main/java/org/onap/policy/apex/starter/handler/PdpMessageHandler.java index a0f4f5863..a022a8a08 100644 --- a/services/services-onappf/src/main/java/org/onap/policy/apex/starter/handler/PdpMessageHandler.java +++ b/services/services-onappf/src/main/java/org/onap/policy/apex/starter/handler/PdpMessageHandler.java @@ -25,12 +25,16 @@ import java.util.List; import org.onap.policy.apex.starter.ApexStarterConstants; import org.onap.policy.apex.starter.parameters.PdpStatusParameters; -import org.onap.policy.apex.starter.parameters.PolicyTypeIdentParameters; +import org.onap.policy.apex.starter.parameters.ToscaPolicyTypeIdentifierParameters; import org.onap.policy.common.utils.services.Registry; +import org.onap.policy.models.pdp.concepts.PdpResponseDetails; import org.onap.policy.models.pdp.concepts.PdpStatus; -import org.onap.policy.models.pdp.concepts.PolicyTypeIdent; import org.onap.policy.models.pdp.enums.PdpHealthStatus; +import org.onap.policy.models.pdp.enums.PdpResponseStatus; import org.onap.policy.models.pdp.enums.PdpState; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; /** * This class supports the handling of pdp messages. @@ -50,25 +54,35 @@ public class PdpMessageHandler { public PdpStatus createPdpStatusFromParameters(final String instanceId, final PdpStatusParameters pdpStatusParameters) { final PdpStatus pdpStatus = new PdpStatus(); - pdpStatus.setName(pdpStatusParameters.getPdpName()); - pdpStatus.setVersion(pdpStatusParameters.getVersion()); pdpStatus.setPdpType(pdpStatusParameters.getPdpType()); pdpStatus.setState(PdpState.PASSIVE); pdpStatus.setHealthy(PdpHealthStatus.HEALTHY); pdpStatus.setDescription(pdpStatusParameters.getDescription()); - pdpStatus.setInstance(instanceId); - final List<PolicyTypeIdent> supportedPolicyTypes = new ArrayList<PolicyTypeIdent>(); - for (final PolicyTypeIdentParameters policyTypeIdentParameters : pdpStatusParameters + pdpStatus.setName(instanceId); + pdpStatus.setSupportedPolicyTypes(getSupportedPolicyTypesFromParameters(pdpStatusParameters)); + return pdpStatus; + } + + /** + * Method to get supported policy types from the parameters. + * + * @param pdpStatusParameters + * @return list of PolicyTypeIdent + */ + private List<ToscaPolicyTypeIdentifier> getSupportedPolicyTypesFromParameters( + final PdpStatusParameters pdpStatusParameters) { + final List<ToscaPolicyTypeIdentifier> supportedPolicyTypes = + new ArrayList<>(pdpStatusParameters.getSupportedPolicyTypes().size()); + for (final ToscaPolicyTypeIdentifierParameters policyTypeIdentParameters : pdpStatusParameters .getSupportedPolicyTypes()) { - supportedPolicyTypes.add( - new PolicyTypeIdent(policyTypeIdentParameters.getName(), policyTypeIdentParameters.getVersion())); + supportedPolicyTypes.add(new ToscaPolicyTypeIdentifier(policyTypeIdentParameters.getName(), + policyTypeIdentParameters.getVersion())); } - pdpStatus.setSupportedPolicyTypes(supportedPolicyTypes); - return pdpStatus; + return supportedPolicyTypes; } /** - * Method to create PdpStatus message from the context, which is to be sent by apex-pdp to pap + * Method to create PdpStatus message from the context, which is to be sent by apex-pdp to pap. * * @return PdpStatus the pdp status message */ @@ -76,13 +90,67 @@ public class PdpMessageHandler { final PdpStatus pdpStatusContext = Registry.get(ApexStarterConstants.REG_PDP_STATUS_OBJECT, PdpStatus.class); final PdpStatus pdpStatus = new PdpStatus(); pdpStatus.setName(pdpStatusContext.getName()); - pdpStatus.setVersion(pdpStatusContext.getVersion()); pdpStatus.setPdpType(pdpStatusContext.getPdpType()); pdpStatus.setState(pdpStatusContext.getState()); pdpStatus.setHealthy(pdpStatusContext.getHealthy()); pdpStatus.setDescription(pdpStatusContext.getDescription()); - pdpStatus.setInstance(pdpStatusContext.getInstance()); pdpStatus.setSupportedPolicyTypes(pdpStatusContext.getSupportedPolicyTypes()); + pdpStatus.setPolicies(pdpStatusContext.getPolicies()); + if (null != pdpStatusContext.getPdpGroup()) { + pdpStatus.setPdpGroup(pdpStatusContext.getPdpGroup()); + } + if (null != pdpStatusContext.getPdpSubgroup()) { + pdpStatus.setPdpSubgroup(pdpStatusContext.getPdpSubgroup()); + } return pdpStatus; } + + /** + * Method to get a final pdp status when the apex started is shutting down. + * + * @param policies list of ToscaPolicy + * + * @return PdpStatus + */ + public PdpStatus getTerminatedPdpStatus() { + final PdpStatus pdpStatusInContext = Registry.get(ApexStarterConstants.REG_PDP_STATUS_OBJECT, PdpStatus.class); + pdpStatusInContext.setState(PdpState.TERMINATED); + pdpStatusInContext.setDescription("Apex pdp shutting down."); + return createPdpStatusFromContext(); + } + + /** + * Method create PdpResponseDetails which will be sent as part of pdp status to PAP. + * + * @param requestId request id of the PdpUpdate message from pap + * @param status response status to be sent back + * @param responseMessage response message to be sent back + * + * @return PdpResponseDetails + */ + public PdpResponseDetails createPdpResonseDetails(final String requestId, final PdpResponseStatus status, + final String responseMessage) { + final PdpResponseDetails pdpResponseDetails = new PdpResponseDetails(); + pdpResponseDetails.setResponseTo(requestId); + pdpResponseDetails.setResponseStatus(status); + pdpResponseDetails.setResponseMessage(responseMessage); + return pdpResponseDetails; + } + + /** + * Method to retrieve list of ToscaPolicyIdentifier from the list of ToscaPolicy. + * + * @param policies list of ToscaPolicy + * + * @return policyTypeIdentifiers + */ + public List<ToscaPolicyIdentifier> getToscaPolicyIdentifiers(final List<ToscaPolicy> policies) { + final List<ToscaPolicyIdentifier> policyIdentifiers = new ArrayList<>(policies.size()); + for (final ToscaPolicy policy : policies) { + if (null != policy.getName() && null != policy.getVersion()) { + policyIdentifiers.add(new ToscaPolicyIdentifier(policy.getName(), policy.getVersion())); + } + } + return policyIdentifiers; + } } |