enable viewing lifecycle statistics with telemetry

Issue-ID: POLICY-3121
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Change-Id: I25e8c4439c0a6beabe532c17cc58919f369f17f0
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
index 4f1a4f3..ea5e49f 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
@@ -595,7 +595,10 @@
         return status;
     }
 
-    private PdpStatistics statisticsPayload() {
+    /**
+     * It provides a snapshot of the current statistics.
+     */
+    public PdpStatistics statisticsPayload() {
         PdpStatistics updateStats = new PdpStatistics(stats);
         updateStats.setTimeStamp(Instant.now());
 
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/server/restful/RestLifecycleManager.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/server/restful/RestLifecycleManager.java
index e996909..9af78ae 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/server/restful/RestLifecycleManager.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/server/restful/RestLifecycleManager.java
@@ -45,6 +45,7 @@
 import org.onap.policy.drools.lifecycle.LifecycleFeature;
 import org.onap.policy.drools.lifecycle.PolicyTypeController;
 import org.onap.policy.models.pdp.concepts.PdpStateChange;
+import org.onap.policy.models.pdp.concepts.PdpStatistics;
 import org.onap.policy.models.pdp.concepts.PdpUpdate;
 import org.onap.policy.models.pdp.enums.PdpState;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
@@ -408,6 +409,17 @@
         return Response.status(Response.Status.OK).entity(Collections.emptyList()).build();
     }
 
+    /**
+     * Get current counts.
+     */
+
+    @GET
+    @Path("statistics")
+    @ApiOperation(value = "Gets Policy Statistics", response = PdpStatistics.class)
+    public Response stats() {
+        return Response.status(Response.Status.OK).entity(LifecycleFeature.getFsm().statisticsPayload()).build();
+    }
+
     private Response deployUndeployOperation(String policy, boolean deploy) {
         ToscaPolicy toscaPolicy = getToscaPolicy(policy);
         if (toscaPolicy == null) {
diff --git a/feature-lifecycle/src/test/java/org/onap/policy/drools/server/restful/RestLifecycleManagerTest.java b/feature-lifecycle/src/test/java/org/onap/policy/drools/server/restful/RestLifecycleManagerTest.java
index 43d3fe3..de67c02 100644
--- a/feature-lifecycle/src/test/java/org/onap/policy/drools/server/restful/RestLifecycleManagerTest.java
+++ b/feature-lifecycle/src/test/java/org/onap/policy/drools/server/restful/RestLifecycleManagerTest.java
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019-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.
@@ -91,8 +91,8 @@
     private static final String VCPE_OPERATIONAL_DROOLS_POLICY_JSON =
             "policies/vCPE.policy.operational.input.tosca.json";
 
-    private static StandardCoder coder = new StandardCoder();
-    private static ControllerSupport controllerSupport = new ControllerSupport("lifecycle");
+    private static final StandardCoder coder = new StandardCoder();
+    private static final ControllerSupport controllerSupport = new ControllerSupport("lifecycle");
 
     private LifecycleFsm fsm;
     private HttpClient client;
@@ -235,6 +235,7 @@
         resourceLists("policies", 2);
         get("policies/example.controller/1.0.0", Status.OK.getStatusCode());
         get("policies/example.artifact/1.0.0", Status.OK.getStatusCode());
+        get("statistics", Status.OK.getStatusCode());
 
         /* add tosca compliant operational policy */