import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.PATCH;
import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.UPDATE;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi;
import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor;
import org.onap.cps.ncmp.rest.mapper.RestOutputCmHandleStateMapper;
-import org.onap.cps.ncmp.rest.model.CmHandleProperties;
-import org.onap.cps.ncmp.rest.model.CmHandleProperty;
import org.onap.cps.ncmp.rest.model.CmHandlePublicProperties;
-import org.onap.cps.ncmp.rest.model.CmHandleQueryRestParameters;
-import org.onap.cps.ncmp.rest.model.CmHandles;
-import org.onap.cps.ncmp.rest.model.ConditionProperties;
-import org.onap.cps.ncmp.rest.model.Conditions;
-import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject;
-import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray;
+import org.onap.cps.ncmp.rest.model.CmHandleQueryParameters;
import org.onap.cps.ncmp.rest.model.RestModuleReference;
import org.onap.cps.ncmp.rest.model.RestOutputCmHandle;
import org.onap.cps.ncmp.rest.model.RestOutputCmHandlePublicProperties;
+import org.onap.cps.ncmp.rest.util.DeprecationHelper;
import org.onap.cps.utils.CpsValidator;
import org.onap.cps.utils.JsonObjectMapper;
import org.springframework.beans.factory.annotation.Value;
private static final String NO_TOPIC = null;
private final NetworkCmProxyDataService networkCmProxyDataService;
private final JsonObjectMapper jsonObjectMapper;
+
+ private final DeprecationHelper deprecationHelper;
private final NcmpRestInputMapper ncmpRestInputMapper;
private final RestOutputCmHandleStateMapper restOutputCmHandleStateMapper;
private final CpsNcmpTaskExecutor cpsNcmpTaskExecutor;
-
@Value("${notification.async.executor.time-out-value-in-ms:2000}")
private int timeOutInMilliSeconds;
+ @Value("${notification.enabled:true}")
+ private boolean asyncEnabled;
/**
* Get resource data from operational datastore.
final @NotNull @Valid String resourceIdentifier,
final @Valid String optionsParamInQuery,
final @Valid String topicParamInQuery) {
- if (isValidTopic(topicParamInQuery)) {
+ if (asyncEnabled && isValidTopic(topicParamInQuery)) {
final String requestId = UUID.randomUUID().toString();
+ log.info("Received Async passthrough-operational request with id {}", requestId);
cpsNcmpTaskExecutor.executeTask(() ->
- networkCmProxyDataService.getResourceDataOperationalForCmHandle(
- cmHandle, resourceIdentifier, optionsParamInQuery, topicParamInQuery,
- requestId
- ), timeOutInMilliSeconds
+ networkCmProxyDataService.getResourceDataOperationalForCmHandle(
+ cmHandle, resourceIdentifier, optionsParamInQuery, topicParamInQuery, requestId
+ ), timeOutInMilliSeconds
);
- return acknowledgeAsyncRequest(requestId);
+ return ResponseEntity.ok(Map.of("requestId", requestId));
+ } else {
+ log.warn("Asynchronous messaging is currently disabled for passthrough-operational."
+ + " Will use synchronous operation.");
}
final Object responseObject = networkCmProxyDataService.getResourceDataOperationalForCmHandle(
final @NotNull @Valid String resourceIdentifier,
final @Valid String optionsParamInQuery,
final @Valid String topicParamInQuery) {
- if (isValidTopic(topicParamInQuery)) {
- final String resourceDataRequestId = UUID.randomUUID().toString();
+ if (asyncEnabled && isValidTopic(topicParamInQuery)) {
+ final String requestId = UUID.randomUUID().toString();
+ log.info("Received Async passthrough-running request with id {}", requestId);
cpsNcmpTaskExecutor.executeTask(() ->
networkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle(
- cmHandle, resourceIdentifier, optionsParamInQuery, topicParamInQuery,
- resourceDataRequestId
+ cmHandle, resourceIdentifier, optionsParamInQuery, topicParamInQuery, requestId
), timeOutInMilliSeconds
);
- return acknowledgeAsyncRequest(resourceDataRequestId);
+ return ResponseEntity.ok(Map.of("requestId", requestId));
+ } else {
+ log.warn("Asynchronous messaging is currently disabled for passthrough-running."
+ + " Will use synchronous operation.");
}
final Object responseObject = networkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle(
}
/**
- * Execute cm handle search.
+ * Query and return cm handles that match the given query parameters.
*
- * @param conditions the conditions
- * @return cm handles returned from search.
+ * @param cmHandleQueryParameters the cm handle query parameters
+ * @return collection of cm handles
*/
@Override
- public ResponseEntity<CmHandles> executeCmHandleSearch(final Conditions conditions) {
- final List<ConditionProperties> conditionProperties =
- conditions.getConditions().stream().collect(Collectors.toList());
- final CmHandles cmHandles = new CmHandles();
- cmHandles.setCmHandles(toCmHandleProperties(processConditions(conditionProperties)));
- return ResponseEntity.ok(cmHandles);
+ @SuppressWarnings("deprecation") // mapOldConditionProperties method will be removed in Release 12
+ public ResponseEntity<List<RestOutputCmHandle>> searchCmHandles(
+ final CmHandleQueryParameters cmHandleQueryParameters) {
+ final CmHandleQueryApiParameters cmHandleQueryApiParameters =
+ deprecationHelper.mapOldConditionProperties(cmHandleQueryParameters);
+ final Set<NcmpServiceCmHandle> cmHandles = networkCmProxyDataService
+ .executeCmHandleSearch(cmHandleQueryApiParameters);
+ final List<RestOutputCmHandle> outputCmHandles =
+ cmHandles.stream().map(this::toRestOutputCmHandle).collect(Collectors.toList());
+ return ResponseEntity.ok(outputCmHandles);
}
/**
- * Query and return cm handles that match the given query parameters.
+ * Query and return cm handle ids that match the given query parameters.
*
- * @param cmHandleQueryRestParameters the cm handle query parameters
+ * @param cmHandleQueryParameters the cm handle query parameters
* @return collection of cm handle ids
*/
- public ResponseEntity<List<String>> queryCmHandles(
- final CmHandleQueryRestParameters cmHandleQueryRestParameters) {
- final Set<String> cmHandleIds = networkCmProxyDataService.queryCmHandles(
- jsonObjectMapper.convertToValueType(cmHandleQueryRestParameters, CmHandleQueryApiParameters.class));
+ @Override
+ public ResponseEntity<List<String>> searchCmHandleIds(
+ final CmHandleQueryParameters cmHandleQueryParameters) {
+ final CmHandleQueryApiParameters cmHandleQueryApiParameters =
+ jsonObjectMapper.convertToValueType(cmHandleQueryParameters, CmHandleQueryApiParameters.class);
+ final Set<String> cmHandleIds = networkCmProxyDataService.executeCmHandleIdSearch(cmHandleQueryApiParameters);
return ResponseEntity.ok(List.copyOf(cmHandleIds));
}
return new ResponseEntity<>(restModuleReferences, HttpStatus.OK);
}
- private Collection<String> processConditions(final List<ConditionProperties> conditionProperties) {
- for (final ConditionProperties conditionProperty : conditionProperties) {
- if (conditionProperty.getName().equals("hasAllModules")) {
- return executeCmHandleSearchesForModuleNames(conditionProperty);
- } else {
- log.warn("Unrecognized condition name {}.", conditionProperty.getName());
- }
- }
- log.warn("No valid conditions found {}.", conditionProperties);
- return Collections.emptyList();
- }
-
- private Collection<String> executeCmHandleSearchesForModuleNames(final ConditionProperties conditionProperties) {
- return networkCmProxyDataService
- .executeCmHandleHasAllModulesSearch(getModuleNames(conditionProperties.getConditionParameters()));
- }
-
- private Collection<String> getModuleNames(final ModuleNamesAsJsonArray moduleNamesAsJsonArray) {
- final Collection<String> moduleNames = new ArrayList<>(moduleNamesAsJsonArray.size());
- for (final ModuleNameAsJsonObject moduleNameAsJsonObject : moduleNamesAsJsonArray) {
- moduleNames.add(moduleNameAsJsonObject.getModuleName());
- }
- return moduleNames;
- }
-
- private CmHandleProperties toCmHandleProperties(final Collection<String> cmHandleIdentifiers) {
- final CmHandleProperties cmHandleProperties = new CmHandleProperties();
- for (final String cmHandleIdentifier : cmHandleIdentifiers) {
- final CmHandleProperty cmHandleProperty = new CmHandleProperty();
- cmHandleProperty.setCmHandleId(cmHandleIdentifier);
- cmHandleProperties.add(cmHandleProperty);
- }
- return cmHandleProperties;
- }
-
private RestOutputCmHandle toRestOutputCmHandle(final NcmpServiceCmHandle ncmpServiceCmHandle) {
final RestOutputCmHandle restOutputCmHandle = new RestOutputCmHandle();
final CmHandlePublicProperties cmHandlePublicProperties = new CmHandlePublicProperties();
throw new InvalidTopicException("Topic name " + topicName + " is invalid", "invalid topic");
}
- private ResponseEntity<Object> acknowledgeAsyncRequest(final String requestId) {
- final Map<String, Object> acknowledgeData = new HashMap<>(1);
- acknowledgeData.put("requestId", requestId);
- return ResponseEntity.ok(acknowledgeData);
- }
-
}