aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java')
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java57
1 files changed, 45 insertions, 12 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java
index 7853fda6..10db1793 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeleteControllerV1.java
@@ -3,7 +3,7 @@
* ONAP PAP
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2021-2022 Nordix Foundation.
* Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,6 +22,8 @@
package org.onap.policy.pap.main.rest;
+import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.Timer;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
@@ -30,15 +32,20 @@ import io.swagger.annotations.Authorization;
import io.swagger.annotations.Extension;
import io.swagger.annotations.ExtensionProperty;
import io.swagger.annotations.ResponseHeader;
+import java.time.Duration;
+import java.time.Instant;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
+import org.onap.policy.common.utils.resources.PrometheusUtils;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.pap.concepts.PdpGroupDeleteResponse;
import org.onap.policy.models.pap.concepts.PdpGroupDeployResponse;
+import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -56,6 +63,33 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
private static final Logger logger = LoggerFactory.getLogger(PdpGroupDeleteControllerV1.class);
private final PdpGroupDeleteProvider provider;
+ private Timer undeploySuccessTimer;
+ private Timer undeployFailureTimer;
+
+
+ @Autowired
+ public PdpGroupDeleteControllerV1(PdpGroupDeleteProvider provider, MeterRegistry meterRegistry) {
+ this.provider = provider;
+ initMetrics(meterRegistry);
+ }
+
+ /**
+ * Initializes the metrics for delete operation.
+ *
+ * @param meterRegistry spring bean for MeterRegistry to add the new metric
+ */
+ public void initMetrics(MeterRegistry meterRegistry) {
+ String metricName = String.join(".", "pap", "policy", "deployments");
+ String description = "Timer for HTTP request to deploy/undeploy a policy";
+ undeploySuccessTimer = Timer.builder(metricName).description(description)
+ .tags(PrometheusUtils.OPERATION_METRIC_LABEL, PrometheusUtils.UNDEPLOY_OPERATION,
+ PrometheusUtils.STATUS_METRIC_LABEL, PdpPolicyStatus.State.SUCCESS.name())
+ .register(meterRegistry);
+ undeployFailureTimer = Timer.builder(metricName).description(description)
+ .tags(PrometheusUtils.OPERATION_METRIC_LABEL, PrometheusUtils.UNDEPLOY_OPERATION,
+ PrometheusUtils.STATUS_METRIC_LABEL, PdpPolicyStatus.State.FAILURE.name())
+ .register(meterRegistry);
+ }
/**
* Deletes a PDP group.
@@ -98,7 +132,7 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
required = false,
value = REQUEST_ID_NAME) final UUID requestId,
@ApiParam(value = "PDP Group Name") @PathVariable("name") String groupName) {
- return doOperation(requestId, "delete group failed", () -> provider.deleteGroup(groupName));
+ return doOperation(requestId, () -> provider.deleteGroup(groupName));
}
/**
@@ -143,7 +177,7 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
value = REQUEST_ID_NAME) final UUID requestId,
@ApiParam(value = "PDP Policy Name") @PathVariable("name") String policyName) {
- return doUndeployOperation(requestId, "undeploy policy failed",
+ return doUndeployOperation(requestId,
() -> provider.undeploy(new ToscaConceptIdentifierOptVersion(policyName, null), getPrincipal()));
}
@@ -191,7 +225,7 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
@ApiParam(value = "PDP Policy Name") @PathVariable("name") String policyName,
@ApiParam(value = "PDP Policy Version") @PathVariable("version") String version) {
- return doUndeployOperation(requestId, "undeploy policy failed",
+ return doUndeployOperation(requestId,
() -> provider.undeploy(new ToscaConceptIdentifierOptVersion(policyName, version), getPrincipal()));
}
@@ -199,19 +233,17 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
* Invokes an operation.
*
* @param requestId request ID
- * @param errmsg error message to log if the operation throws an exception
* @param runnable operation to invoke
* @return a {@link PdpGroupDeleteResponse} response entity
*/
- private ResponseEntity<PdpGroupDeleteResponse> doOperation(UUID requestId, String errmsg,
- RunnableWithPfEx runnable) {
+ private ResponseEntity<PdpGroupDeleteResponse> doOperation(UUID requestId, RunnableWithPfEx runnable) {
try {
runnable.run();
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
.body(new PdpGroupDeleteResponse());
} catch (PfModelException | PfModelRuntimeException e) {
- logger.warn(errmsg, e);
+ logger.warn("delete group failed", e);
var resp = new PdpGroupDeleteResponse();
resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
return addLoggingHeaders(
@@ -224,22 +256,23 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
* Invokes the undeployment operation.
*
* @param requestId request ID
- * @param errmsg error message to log if the operation throws an exception
* @param runnable operation to invoke
* @return a {@link PdpGroupDeployResponse} response entity
*/
- private ResponseEntity<PdpGroupDeployResponse> doUndeployOperation(UUID requestId, String errmsg,
- RunnableWithPfEx runnable) {
+ private ResponseEntity<PdpGroupDeployResponse> doUndeployOperation(UUID requestId, RunnableWithPfEx runnable) {
+ Instant start = Instant.now();
try {
runnable.run();
+ undeploySuccessTimer.record(Duration.between(start, Instant.now()));
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.accepted()), requestId)
.body(new PdpGroupDeployResponse(PdpGroupDeployControllerV1.DEPLOYMENT_RESPONSE_MSG,
PdpGroupDeployControllerV1.POLICY_STATUS_URI));
} catch (PfModelException | PfModelRuntimeException e) {
- logger.warn(errmsg, e);
+ logger.warn("undeploy policy failed", e);
var resp = new PdpGroupDeployResponse();
resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
+ undeployFailureTimer.record(Duration.between(start, Instant.now()));
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
requestId).body(resp);