<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<profiles>
# configured and started. Thus some of them have a "placeholder" property.
#
-actor.service.GUARD.disabled=true
+#actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=GUARD
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decision
actor.service.AAI.clientName=AAI
actor.service.CDS.operations.xxx.yyy=
actor.service.SDNC.clientName=SDNC
-actor.service.SDNC.path=
+actor.service.SDNC.path=/
actor.service.SDNC.operations.BandwidthOnDemand.placeholder=
actor.service.SDNC.operations.Reroute.placeholder=
# ============LICENSE_START=======================================================
# ONAP
# ================================================================================
-# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
# Modifications Copyright (C) 2019 Bell Canada.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
guard.url=http://localhost:6669/policy/pdpx/v1/decision
guard.jdbc.url=jdbc:mariadb://localhost:3306/operationshistory
-guard.disabled=true
+guard.disabled=false
sdnc.url=sdnc
sdnc.username=sdnc
private final Deque<Operation> operationHistory = new ConcurrentLinkedDeque<>();
+ /**
+ * Set to {@code true} to prevent the last item in {@link #operationHistory} from
+ * being included in the outcome of {@link #getHistory()}. Used when the operation
+ * aborts prematurely due to lock-denied, guard-denied, etc.
+ */
+ private boolean holdLast = false;
+
/**
* Queue of outcomes yet to be processed. Outcomes are added to this each time the
* "start" or "complete" callback is invoked.
case LOCK_LOST:
case GUARD_DENIED:
case CONTROL_LOOP_TIMEOUT:
+ holdLast = false;
return false;
default:
break;
* @return the list of control loop operations
*/
public List<ControlLoopOperation> getHistory() {
- return operationHistory.stream().map(Operation::getClOperation).map(ControlLoopOperation::new)
- .collect(Collectors.toList());
+ Operation last = (holdLast ? operationHistory.removeLast() : null);
+
+ List<ControlLoopOperation> result = operationHistory.stream().map(Operation::getClOperation)
+ .map(ControlLoopOperation::new).collect(Collectors.toList());
+
+ if (last != null) {
+ operationHistory.add(last);
+ }
+
+ return result;
}
/**
* @param message message to put into the DB
*/
private void storeFailureInDataBase(OperationOutcome outcome, PolicyResult result, String message) {
+ // don't include this in history yet
+ holdLast = true;
+
outcome.setActor(actor);
outcome.setOperation(operation);
outcome.setMessage(message);
actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=guard-client
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decide
#actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=guard-client
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decide
# purposely missing the URL
#actor.service.GUARD.disabled=true
actor.service.GUARD.clientName=guard-client
+actor.service.GUARD.onapName=my-onap-name
+actor.service.GUARD.onapComponent=my-onap-component
+actor.service.GUARD.onapInstance=my-onap-instance
actor.service.GUARD.operations.Decision.path=decide
operation.history.url=jdbc:h2:mem:EventManagerServicesTest
actor.service.GUARD.disabled=${envd:GUARD_DISABLED:false}
actor.service.GUARD.clientName=GUARD
+actor.service.GUARD.onapName=Policy
+actor.service.GUARD.onapComponent=Drools PDP
+actor.service.GUARD.onapInstance=Frankfurt
actor.service.GUARD.operations.Decision.path=decision
actor.service.AAI.clientName=AAI
/*-
* ============LICENSE_START=======================================================
- * guard
+ * ONAP
* ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
decisionRequest.setAction("guard");
Map<String, String> guard = new HashMap<>();
guard.put("actor", xacmlReq.getActorId());
- guard.put("recipe", xacmlReq.getOperationId());
+ guard.put("operation", xacmlReq.getOperationId());
guard.put("target", xacmlReq.getTargetId());
if (xacmlReq.getClnameId() != null) {
guard.put("clname", xacmlReq.getClnameId());