package org.onap.policy.controlloop.actor.appc;
+import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.onap.aai.domain.yang.GenericVnf;
import org.onap.policy.aai.AaiConstants;
import org.onap.policy.aai.AaiCqResponse;
import org.onap.policy.appc.Request;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationProperties;
import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicConfig;
import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
import org.slf4j.Logger;
public static final String NAME = "ModifyConfig";
+ private static final List<String> PROPERTY_NAMES = List.of(OperationProperties.AAI_RESOURCE_VNF);
+
/**
* Constructs the object.
*
* @param config configuration for this operation
*/
public ModifyConfigOperation(ControlLoopOperationParams params, BidirectionalTopicConfig config) {
- super(params, config);
+ super(params, config, PROPERTY_NAMES);
}
/**
@Override
@SuppressWarnings("unchecked")
protected CompletableFuture<OperationOutcome> startPreprocessorAsync() {
+ if (params.isPreprocessed()) {
+ return null;
+ }
+
ControlLoopOperationParams cqParams = params.toBuilder().actor(AaiConstants.ACTOR_NAME)
.operation(AaiCqResponse.OPERATION).payload(null).retry(null).timeoutSec(null).build();
@Override
protected Request makeRequest(int attempt) {
+ return makeRequest(attempt, getVnfId());
+ }
+
+ protected String getVnfId() {
+ GenericVnf vnf = this.getProperty(OperationProperties.AAI_RESOURCE_VNF);
+ if (vnf != null) {
+ return vnf.getVnfId();
+ }
+
AaiCqResponse cq = params.getContext().getProperty(AaiCqResponse.CONTEXT_KEY);
+ if (cq == null) {
+ throw new IllegalStateException("target vnf-id could not be determined");
+ }
GenericVnf genvnf = cq.getGenericVnfByModelInvariantId(params.getTarget().getResourceID());
if (genvnf == null) {
throw new IllegalArgumentException("target vnf-id could not be found");
}
- return makeRequest(attempt, genvnf.getVnfId());
+ return genvnf.getVnfId();
}
}