- public ResponseEntity<Object> getResourceDataFromDmi(final String cmHandle,
- final String resourceId,
- final String optionsParamInQuery,
- final String acceptParamInHeader,
- final DataStoreEnum dataStore) {
- final PersistenceCmHandle persistenceCmHandle =
- cmHandlePropertiesRetriever.retrieveCmHandleDmiServiceNameAndProperties(cmHandle);
- final DmiRequestBody dmiRequestBody = DmiRequestBody.builder()
- .operation(READ)
- .build();
- dmiRequestBody.asCmHandleProperties(persistenceCmHandle.getAdditionalProperties());
- final String jsonBody = getDmiRequestBodyAsString(dmiRequestBody);
-
- final var dmiResourceDataUrl = getDmiDatastoreUrlWithOptions(
- persistenceCmHandle.resolveDmiServiceName(DATA), cmHandle, resourceId,
- optionsParamInQuery, dataStore);
- final var httpHeaders = prepareHeader(acceptParamInHeader);
- return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonBody, httpHeaders);
+ @Timed(value = "cps.ncmp.dmi.get",
+ description = "Time taken to fetch the resource data from operational data store for given cm handle "
+ + "identifier on given resource using dmi client")
+ public ResponseEntity<Object> getResourceDataFromDmi(final String dataStoreName,
+ final String cmHandleId,
+ final String resourceId,
+ final String optionsParamInQuery,
+ final String topicParamInQuery,
+ final String requestId,
+ final String authorization) {
+ final YangModelCmHandle yangModelCmHandle = getYangModelCmHandle(cmHandleId);
+ final CmHandleState cmHandleState = yangModelCmHandle.getCompositeState().getCmHandleState();
+ validateIfCmHandleStateReady(yangModelCmHandle, cmHandleState);
+ final String jsonRequestBody = getDmiRequestBody(READ, requestId, null, null,
+ yangModelCmHandle);
+ final String dmiResourceDataUrl = getDmiRequestUrl(dataStoreName, cmHandleId, resourceId, optionsParamInQuery,
+ topicParamInQuery, yangModelCmHandle.resolveDmiServiceName(RequiredDmiService.DATA));
+ return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonRequestBody, READ, authorization);
+ }
+
+ /**
+ * This method fetches all the resource data from operational data store for given cm handle
+ * identifier using dmi client.
+ *
+ * @param dataStoreName data store name
+ * @param cmHandleId network resource identifier
+ * @param requestId requestId for async responses
+ * @return {@code ResponseEntity} response entity
+ */
+ public ResponseEntity<Object> getResourceDataFromDmi(final String dataStoreName,
+ final String cmHandleId,
+ final String requestId) {
+ final YangModelCmHandle yangModelCmHandle = getYangModelCmHandle(cmHandleId);
+ final String jsonRequestBody = getDmiRequestBody(READ, requestId, null, null,
+ yangModelCmHandle);
+ final String dmiResourceDataUrl = getDmiRequestUrl(dataStoreName, cmHandleId, "/",
+ null, null,
+ yangModelCmHandle.resolveDmiServiceName(RequiredDmiService.DATA));
+ final CmHandleState cmHandleState = yangModelCmHandle.getCompositeState().getCmHandleState();
+ validateIfCmHandleStateReady(yangModelCmHandle, cmHandleState);
+ return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonRequestBody, READ, null);
+ }
+
+ /**
+ * This method requests the resource data by data store for given list of cm handles using dmi client.
+ * The data wil be returned as message on the topic specified.
+ *
+ * @param topicParamInQuery topic name for (triggering) async responses
+ * @param dataOperationRequest data operation request to execute operations
+ * @param requestId requestId for as a response
+ * @param authorization contents of Authorization header, or null if not present
+ */
+ public void requestResourceDataFromDmi(final String topicParamInQuery,
+ final DataOperationRequest dataOperationRequest,
+ final String requestId,
+ final String authorization) {
+
+ final Set<String> cmHandlesIds
+ = getDistinctCmHandleIdsFromDataOperationRequest(dataOperationRequest);
+
+ final Collection<YangModelCmHandle> yangModelCmHandles
+ = inventoryPersistence.getYangModelCmHandles(cmHandlesIds);
+
+ final Map<String, List<DmiDataOperation>> operationsOutPerDmiServiceName
+ = ResourceDataOperationRequestUtils.processPerDefinitionInDataOperationsRequest(topicParamInQuery,
+ requestId, dataOperationRequest, yangModelCmHandles);
+
+ buildDataOperationRequestUrlAndSendToDmiService(topicParamInQuery, requestId, operationsOutPerDmiServiceName,
+ authorization);