Fix xacml pdp registration issue
[policy/xacml-pdp.git] / main / src / main / java / org / onap / policy / pdpx / main / comm / XacmlPdpMessage.java
index 233bd7f..802d735 100644 (file)
 
 package org.onap.policy.pdpx.main.comm;
 
-import java.net.UnknownHostException;
+import lombok.Getter;
 import org.onap.policy.common.utils.network.NetworkUtil;
+import org.onap.policy.models.pdp.concepts.PdpStateChange;
 import org.onap.policy.models.pdp.concepts.PdpStatus;
+import org.onap.policy.models.pdp.concepts.PdpUpdate;
 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
 import org.onap.policy.models.pdp.enums.PdpState;
 import org.onap.policy.pdpx.main.rest.XacmlPdpApplicationManager;
@@ -32,21 +34,25 @@ import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Getter
 public class XacmlPdpMessage {
 
     // The logger for this class
     private static final Logger LOGGER = LoggerFactory.getLogger(XacmlPdpMessage.class);
+    private String pdpGroup;
+    private String pdpSubGroup;
+    private PdpState pdpState;
+    private String pdpName = NetworkUtil.getHostname();
 
     /**
-     * Method used to format the status message.
+     * Method used to format the initial registration status message.
      *
      * @param state of the PDP
      * @return status message of the PDP
-     * @throws UnknownHostException if cannot get hostname
      */
-    public PdpStatus formatStatusMessage(PdpState state) {
+    public PdpStatus formatInitialStatusMessage(PdpState state) {
         PdpStatus status = new PdpStatus();
-        status.setName(NetworkUtil.getHostname());
+        status.setName(pdpName);
 
         if (XacmlPdpActivator.getCurrent().isAlive()) {
             status.setHealthy(PdpHealthStatus.HEALTHY);
@@ -63,4 +69,46 @@ public class XacmlPdpMessage {
         return status;
 
     }
+
+    /**
+     * Method used to format the PdpStatus message for heartbeat and PDP Updates.
+     *
+     * @return status message of the PDP
+     */
+    public PdpStatus formatPdpStatusMessage() {
+        PdpStatus status = new PdpStatus();
+        status.setName(pdpName);
+
+        if (XacmlPdpActivator.getCurrent().isAlive()) {
+            status.setHealthy(PdpHealthStatus.HEALTHY);
+        } else {
+            status.setHealthy(PdpHealthStatus.NOT_HEALTHY);
+        }
+
+        status.setPdpType("xacml");
+        status.setState(pdpState);
+        status.setPdpGroup(pdpGroup);
+        status.setPdpSubgroup(pdpSubGroup);
+        status.setSupportedPolicyTypes(XacmlPdpApplicationManager.getToscaPolicyTypeIdents());
+        status.setPolicies(XacmlPdpApplicationManager.getToscaPolicyIdentifiers());
+
+        return status;
+    }
+
+    /**
+     * Method used to update PDP status attributes from PdpStateChange.
+     */
+    public void updateInternalStatus(PdpStateChange message) {
+        pdpGroup = message.getPdpGroup();
+        pdpSubGroup = message.getPdpSubgroup();
+        pdpState = message.getState();
+    }
+
+    /**
+     * Method used to update PDP status attributes from PdpUpdate.
+     */
+    public void updateInternalStatus(PdpUpdate message) {
+        pdpGroup = message.getPdpGroup();
+        pdpSubGroup = message.getPdpSubgroup();
+    }
 }