Merge "patch operation for ncmp running"
authoraditya puthuparambil <aditya.puthuparambil@bell.ca>
Fri, 21 Jan 2022 12:23:11 +0000 (12:23 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 21 Jan 2022 12:23:11 +0000 (12:23 +0000)
1  2 
cps-ncmp-rest/docs/openapi/ncmp.yml
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java

@@@ -1,5 -1,5 +1,5 @@@
  #  ============LICENSE_START=======================================================
 -#  Copyright (C) 2021 Nordix Foundation
 +#  Copyright (C) 2021-2022 Nordix Foundation
  #  Modifications Copyright (C) 2021 Pantheon.tech
  #  Modifications Copyright (C) 2021 Bell Canada
  #  ================================================================================
  #
  #  SPDX-License-Identifier: Apache-2.0
  #  ============LICENSE_END=========================================================
 -
 -nodeByCmHandleAndXpath:
 -  get:
 -    description: Get a node with an option to retrieve all the children for a given cm Handle
 -    deprecated: true
 -    tags:
 -      - network-cm-proxy
 -    summary: Get a node given a cm Handle and xpath
 -    operationId: getNodeByCmHandleAndXpath
 -    parameters:
 -      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
 -      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
 -      - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
 -    responses:
 -      200:
 -        $ref: 'components.yaml#/components/responses/Ok'
 -      400:
 -        $ref: 'components.yaml#/components/responses/BadRequest'
 -      401:
 -        $ref: 'components.yaml#/components/responses/Unauthorized'
 -      403:
 -        $ref: 'components.yaml#/components/responses/Forbidden'
 -      404:
 -        $ref: 'components.yaml#/components/responses/NotFound'
 -
 -nodesByCmHandleAndCpsPath:
 -  get:
 -    description: Query nodes for the given cps path and cm Handle
 -    deprecated: true
 -    tags:
 -      - network-cm-proxy
 -    summary: Query data nodes
 -    operationId: queryNodesByCmHandleAndCpsPath
 -    parameters:
 -      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
 -      - $ref: 'components.yaml#/components/parameters/cpsPathInQuery'
 -      - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
 -    responses:
 -      200:
 -        $ref: 'components.yaml#/components/responses/Ok'
 -      400:
 -        $ref: 'components.yaml#/components/responses/BadRequest'
 -      401:
 -        $ref: 'components.yaml#/components/responses/Unauthorized'
 -      403:
 -        $ref: 'components.yaml#/components/responses/Forbidden'
 -      404:
 -        $ref: 'components.yaml#/components/responses/NotFound'
 -
 -nodesByCmHandleAndXpath:
 -  post:
 -    description: Create a node with descendants for the given CM Handle; top level or under existing node (requires xpath)
 -    deprecated: true
 -    tags:
 -      - network-cm-proxy
 -    summary: Create a node with descendants
 -    operationId: createNode
 -    parameters:
 -      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
 -      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
 -    requestBody:
 -      required: true
 -      content:
 -        application/json:
 -          schema:
 -            type: object
 -          examples:
 -            dataSampleRequest:
 -              $ref: 'components.yaml#/components/examples/dataSampleRequest'
 -    responses:
 -      201:
 -        $ref: 'components.yaml#/components/responses/Created'
 -      400:
 -        $ref: 'components.yaml#/components/responses/BadRequest'
 -      401:
 -        $ref: 'components.yaml#/components/responses/Unauthorized'
 -      403:
 -        $ref: 'components.yaml#/components/responses/Forbidden'
 -      404:
 -        $ref: 'components.yaml#/components/responses/NotFound'
 -
 -  patch:
 -    description: Update node leaves for the given cps path and cm Handle
 -    deprecated: true
 -    tags:
 -      - network-cm-proxy
 -    summary: Update node leaves
 -    operationId: updateNodeLeaves
 -    parameters:
 -      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
 -      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
 -    requestBody:
 -      required: true
 -      content:
 -        application/json:
 -          schema:
 -            type: object
 -          examples:
 -            dataSampleRequest:
 -              $ref: 'components.yaml#/components/examples/dataSampleRequest'
 -    responses:
 -      200:
 -        $ref: 'components.yaml#/components/responses/Ok'
 -      400:
 -        $ref: 'components.yaml#/components/responses/BadRequest'
 -      401:
 -        $ref: 'components.yaml#/components/responses/Unauthorized'
 -      403:
 -        $ref: 'components.yaml#/components/responses/Forbidden'
 -      404:
 -        $ref: 'components.yaml#/components/responses/NotFound'
 -
 -  put:
 -    description: Replace a node with descendants for the given cps path and cm Handle
 -    deprecated: true
 -    tags:
 -      - network-cm-proxy
 -    summary: Replace a node with descendants
 -    operationId: replaceNode
 -    parameters:
 -      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
 -      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
 -    requestBody:
 -      required: true
 -      content:
 -        application/json:
 -          schema:
 -            type: object
 -          examples:
 -            dataSampleRequest:
 -              $ref: 'components.yaml#/components/examples/dataSampleRequest'
 -    responses:
 -      200:
 -        $ref: 'components.yaml#/components/responses/Ok'
 -      400:
 -        $ref: 'components.yaml#/components/responses/BadRequest'
 -      401:
 -        $ref: 'components.yaml#/components/responses/Unauthorized'
 -      403:
 -        $ref: 'components.yaml#/components/responses/Forbidden'
 -      404:
 -        $ref: 'components.yaml#/components/responses/NotFound'
 -
 -listNodeByCmHandleAndXpath:
 -  post:
 -    description: Add one or more list-node child elements under existing node for the given CM Handle
 -    deprecated: true
 -    tags:
 -      - network-cm-proxy
 -    summary: Add list-node child element(s)
 -    operationId: addListNodeElements
 -    parameters:
 -      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
 -      - $ref: 'components.yaml#/components/parameters/requiredXpathInQuery'
 -    requestBody:
 -      required: true
 -      content:
 -        application/json:
 -          schema:
 -            type: object
 -          examples:
 -            dataSampleRequest:
 -              $ref: 'components.yaml#/components/examples/dataSampleRequest'
 -    responses:
 -      201:
 -        $ref: 'components.yaml#/components/responses/Created'
 -      400:
 -        $ref: 'components.yaml#/components/responses/BadRequest'
 -      401:
 -        $ref: 'components.yaml#/components/responses/Unauthorized'
 -      403:
 -        $ref: 'components.yaml#/components/responses/Forbidden'
 -      404:
 -        $ref: 'components.yaml#/components/responses/NotFound'
 -
  getResourceDataForPassthroughOperational:
    get:
      tags:
@@@ -165,12 -340,12 +165,12 @@@ resourceDataForPassthroughRunning
      requestBody:
        required: true
        content:
-         application/json:
+         '*/*':
            schema:
              type: object
            examples:
              dataSampleRequest:
-               $ref: 'components.yaml#/components/examples/dataSampleRequest'
+               $ref: 'components.yaml#/components/examples/dataSamplePatchRequest'
      responses:
        200:
          $ref: 'components.yaml#/components/responses/Ok'
@@@ -1,7 -1,7 +1,7 @@@
  /*
   *  ============LICENSE_START=======================================================
   *  Copyright (C) 2021 Pantheon.tech
 - *  Modifications (C) 2021 Nordix Foundation
 + *  Modifications (C) 2021-2022 Nordix Foundation
   *  Modification Copyright (C) 2021 highstreet technologies GmbH
   *  Modifications (C) 2021 Bell Canada
   *  ================================================================================
@@@ -48,6 -48,9 +48,6 @@@ import org.onap.cps.ncmp.rest.model.Con
  import org.onap.cps.ncmp.rest.model.ModuleNameAsJsonObject;
  import org.onap.cps.ncmp.rest.model.ModuleNamesAsJsonArray;
  import org.onap.cps.ncmp.rest.model.ModuleReference;
 -import org.onap.cps.spi.FetchDescendantsOption;
 -import org.onap.cps.spi.model.DataNode;
 -import org.onap.cps.utils.DataMapUtils;
  import org.springframework.http.HttpStatus;
  import org.springframework.http.ResponseEntity;
  import org.springframework.web.bind.annotation.RequestMapping;
@@@ -72,6 -75,89 +72,6 @@@ public class NetworkCmProxyController i
          this.networkCmProxyDataService = networkCmProxyDataService;
      }
  
 -    /**
 -     * Create Node.
 -     * @deprecated This Method is no longer used as part of NCMP.
 -     */
 -    // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
 -    @Override
 -    @Deprecated(forRemoval = false)
 -    public ResponseEntity<Void> createNode(final String cmHandle, @Valid final Object jsonData,
 -        @Valid final String parentNodeXpath) {
 -        networkCmProxyDataService.createDataNode(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
 -        return new ResponseEntity<>(HttpStatus.CREATED);
 -    }
 -
 -    /**
 -     * Add List-node Child Element.
 -     * @deprecated This Method is no longer used as part of NCMP.
 -     */
 -    // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
 -    @Override
 -    @Deprecated(forRemoval = false)
 -    public ResponseEntity<Void> addListNodeElements(@NotNull @Valid final String parentNodeXpath,
 -        final String cmHandle, @Valid final Object jsonData) {
 -        networkCmProxyDataService.addListNodeElements(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
 -        return new ResponseEntity<>(HttpStatus.CREATED);
 -    }
 -
 -    /**
 -     * Get Node By CM Handle and X-Path.
 -     * @deprecated This Method is no longer used as part of NCMP.
 -     */
 -    // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
 -    @Override
 -    @Deprecated(forRemoval = false)
 -    public ResponseEntity<Object> getNodeByCmHandleAndXpath(final String cmHandle, @Valid final String xpath,
 -        @Valid final Boolean includeDescendants) {
 -        final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
 -            ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
 -        final var dataNode = networkCmProxyDataService.getDataNode(cmHandle, xpath, fetchDescendantsOption);
 -        return new ResponseEntity<>(DataMapUtils.toDataMap(dataNode), HttpStatus.OK);
 -    }
 -
 -    /**
 -     * Query Data Nodes.
 -     * @deprecated This Method is no longer used as part of NCMP.
 -     */
 -    // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
 -    @Override
 -    @Deprecated(forRemoval = false)
 -    public ResponseEntity<Object> queryNodesByCmHandleAndCpsPath(final String cmHandle, @Valid final String cpsPath,
 -        @Valid final Boolean includeDescendants) {
 -        final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants)
 -            ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
 -        final Collection<DataNode> dataNodes =
 -            networkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption);
 -        return new ResponseEntity<>(GSON.toJson(dataNodes), HttpStatus.OK);
 -    }
 -
 -    /**
 -     * Replace Node With Descendants.
 -     * @deprecated This Method is no longer used as part of NCMP.
 -     */
 -    // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
 -    @Override
 -    @Deprecated(forRemoval = false)
 -    public ResponseEntity<Object> replaceNode(final String cmHandle, @Valid final Object jsonData,
 -        @Valid final String parentNodeXpath) {
 -        networkCmProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
 -        return new ResponseEntity<>(HttpStatus.OK);
 -    }
 -
 -    /**
 -     * Update Node Leaves.
 -     * @deprecated This Method is no longer used as part of NCMP.
 -     */
 -    // All deprecated APIs methods will be address into https://jira.onap.org/browse/CPS-642
 -    @Override
 -    @Deprecated(forRemoval = false)
 -    public ResponseEntity<Object> updateNodeLeaves(final String cmHandle, @Valid final Object jsonData,
 -        @Valid final String parentNodeXpath) {
 -        networkCmProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, GSON.toJson(jsonData));
 -        return new ResponseEntity<>(HttpStatus.OK);
 -    }
 -
      /**
       * Get resource data from operational datastore.
       *
      public ResponseEntity<Object> patchResourceDataRunningForCmHandle(final String resourceIdentifier,
          final String cmHandle,
          final Object requestBody, final String contentType) {
-         networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
+         final Object responseObject = networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle,
              resourceIdentifier, PATCH, GSON.toJson(requestBody), contentType);
-         return new ResponseEntity<>(HttpStatus.OK);
+         return ResponseEntity.ok(responseObject);
      }
  
      /**
@@@ -1,7 -1,7 +1,7 @@@
  /*
   *  ============LICENSE_START=======================================================
   *  Copyright (C) 2021 highstreet technologies GmbH
 - *  Modifications Copyright (C) 2021 Nordix Foundation
 + *  Modifications Copyright (C) 2021-2022 Nordix Foundation
   *  Modifications Copyright (C) 2021 Pantheon.tech
   *  ================================================================================
   *  Licensed under the Apache License, Version 2.0 (the "License");
@@@ -25,7 -25,10 +25,7 @@@ package org.onap.cps.ncmp.api
  import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum;
  
  import java.util.Collection;
 -import org.checkerframework.checker.nullness.qual.NonNull;
  import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
 -import org.onap.cps.spi.FetchDescendantsOption;
 -import org.onap.cps.spi.model.DataNode;
  import org.onap.cps.spi.model.ModuleReference;
  
  /*
   */
  public interface NetworkCmProxyDataService {
  
 -    /**
 -     * Retrieves datanode by XPath for a given cm handle.
 -     *
 -     * @param cmHandle               The identifier for a network function, network element, subnetwork or any other cm
 -     *                               object by managed Network CM Proxy
 -     * @param xpath                  xpath
 -     * @param fetchDescendantsOption defines the scope of data to fetch: either single node or all the descendant nodes
 -     *                               (recursively) as well
 -     * @return data node object
 -     */
 -    DataNode getDataNode(@NonNull String cmHandle, @NonNull String xpath,
 -        @NonNull FetchDescendantsOption fetchDescendantsOption);
 -
 -    /**
 -     * Get datanodes for the given cm handle by cps path.
 -     *
 -     * @param cmHandle               The identifier for a network function, network element, subnetwork or any other cm
 -     *                               object by managed Network CM Proxy
 -     * @param cpsPath                cps path
 -     * @param fetchDescendantsOption defines whether the descendants of the node(s) found by the query should be
 -     *                               included in the output
 -     * @return a collection of datanodes
 -     */
 -    Collection<DataNode> queryDataNodes(@NonNull String cmHandle, @NonNull String cpsPath,
 -        @NonNull FetchDescendantsOption fetchDescendantsOption);
 -
 -    /**
 -     * Creates data node with descendants at root level or under existing node (if parent node xpath is provided).
 -     *
 -     * @param cmHandle        The identifier for a network function, network element, subnetwork or any other cm
 -     *                        object managed by Network CM Proxy
 -     * @param parentNodeXpath xpath to parent node or '/' for root level
 -     * @param jsonData        data as JSON string
 -     */
 -    void createDataNode(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData);
 -
 -    /**
 -     * Creates one or more child node elements with descendants under existing node from list-node data fragment.
 -     *
 -     * @param cmHandle        The identifier for a network function, network element, subnetwork or any other cm
 -     *                        object managed by Network CM Proxy
 -     * @param parentNodeXpath xpath to parent node
 -     * @param jsonData        data as JSON string
 -     */
 -    void addListNodeElements(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData);
 -
 -    /**
 -     * Updates data node for given cm handle using xpath to parent node.
 -     *
 -     * @param cmHandle        The identifier for a network function, network element, subnetwork or any other cm object
 -     *                        by managed Network CM Proxy
 -     * @param parentNodeXpath xpath to parent node
 -     * @param jsonData        json data
 -     */
 -    void updateNodeLeaves(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData);
 -
 -    /**
 -     * Replaces existing data node content including descendants.
 -     *
 -     * @param cmHandle        The identifier for a network function, network element, subnetwork or any other cm object
 -     *                        by managed Network CM Proxy
 -     * @param parentNodeXpath xpath to parent node
 -     * @param jsonData        json data
 -     */
 -    void replaceNodeTree(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData);
 -
      /**
       * Registration of New CM Handles.
       *
       * @param operation required operation
       * @param requestBody request body to create resource
       * @param contentType content type in body
+      * @return {@code Object} return data
       */
-     void writeResourceDataPassThroughRunningForCmHandle(String cmHandle,
+     Object writeResourceDataPassThroughRunningForCmHandle(String cmHandle,
                                                          String resourceIdentifier,
                                                          OperationEnum operation,
                                                          String requestBody,
@@@ -1,7 -1,7 +1,7 @@@
  /*
   *  ============LICENSE_START=======================================================
   *  Copyright (C) 2021 highstreet technologies GmbH
 - *  Modifications Copyright (C) 2021 Nordix Foundation
 + *  Modifications Copyright (C) 2021-2022 Nordix Foundation
   *  Modifications Copyright (C) 2021 Pantheon.tech
   *  Modifications Copyright (C) 2021 Bell Canada
   *  ================================================================================
@@@ -38,6 -38,7 +38,6 @@@ import lombok.extern.slf4j.Slf4j
  import org.onap.cps.api.CpsAdminService;
  import org.onap.cps.api.CpsDataService;
  import org.onap.cps.api.CpsModuleService;
 -import org.onap.cps.api.CpsQueryService;
  import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
  import org.onap.cps.ncmp.api.impl.exception.NcmpException;
  import org.onap.cps.ncmp.api.impl.operations.DmiDataOperations;
@@@ -47,11 -48,14 +47,11 @@@ import org.onap.cps.ncmp.api.models.CmH
  import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
  import org.onap.cps.ncmp.api.models.PersistenceCmHandle;
  import org.onap.cps.ncmp.api.models.PersistenceCmHandlesList;
 -import org.onap.cps.spi.FetchDescendantsOption;
  import org.onap.cps.spi.exceptions.DataNodeNotFoundException;
  import org.onap.cps.spi.exceptions.DataValidationException;
 -import org.onap.cps.spi.model.DataNode;
  import org.onap.cps.spi.model.ModuleReference;
  import org.springframework.http.ResponseEntity;
  import org.springframework.stereotype.Service;
 -import org.springframework.util.StringUtils;
  
  @Slf4j
  @Service
@@@ -69,6 -73,8 +69,6 @@@ public class NetworkCmProxyDataServiceI
  
      private ObjectMapper objectMapper;
  
 -    private CpsQueryService cpsQueryService;
 -
      private DmiDataOperations dmiDataOperations;
  
      private DmiModelOperations dmiModelOperations;
       * Constructor Injection for Dependencies.
       * @param dmiDataOperations DMI operation
       * @param cpsDataService Data Service Interface
 -     * @param cpsQueryService Query Service Interface
       * @param objectMapper Object Mapper
       */
      public NetworkCmProxyDataServiceImpl(final DmiDataOperations dmiDataOperations,
                                           final DmiModelOperations dmiModelOperations,
                                           final CpsModuleService cpsModuleService,
                                           final CpsDataService cpsDataService,
 -                                         final CpsQueryService cpsQueryService,
                                           final CpsAdminService cpsAdminService,
                                           final ObjectMapper objectMapper) {
          this.dmiDataOperations = dmiDataOperations;
          this.dmiModelOperations = dmiModelOperations;
          this.cpsModuleService = cpsModuleService;
          this.cpsDataService = cpsDataService;
 -        this.cpsQueryService = cpsQueryService;
          this.cpsAdminService = cpsAdminService;
          this.objectMapper = objectMapper;
      }
  
 -    @Override
 -    public DataNode getDataNode(final String cmHandle, final String xpath,
 -        final FetchDescendantsOption fetchDescendantsOption) {
 -        return cpsDataService
 -            .getDataNode(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, xpath, fetchDescendantsOption);
 -    }
 -
 -    @Override
 -    public Collection<DataNode> queryDataNodes(final String cmHandle, final String cpsPath,
 -        final FetchDescendantsOption fetchDescendantsOption) {
 -        return cpsQueryService
 -            .queryDataNodes(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, cpsPath, fetchDescendantsOption);
 -    }
 -
 -    @Override
 -    public void createDataNode(final String cmHandle, final String parentNodeXpath, final String jsonData) {
 -        if (!StringUtils.hasText(parentNodeXpath) || "/".equals(parentNodeXpath)) {
 -            cpsDataService.saveData(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, jsonData, NO_TIMESTAMP);
 -        } else {
 -            cpsDataService
 -                .saveData(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData, NO_TIMESTAMP);
 -        }
 -    }
 -
 -    @Override
 -    public void addListNodeElements(final String cmHandle, final String parentNodeXpath, final String jsonData) {
 -        cpsDataService.saveListElements(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData,
 -            NO_TIMESTAMP);
 -    }
 -
 -    @Override
 -    public void updateNodeLeaves(final String cmHandle, final String parentNodeXpath, final String jsonData) {
 -        cpsDataService
 -            .updateNodeLeaves(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData,
 -                NO_TIMESTAMP);
 -    }
 -
 -    @Override
 -    public void replaceNodeTree(final String cmHandle, final String parentNodeXpath, final String jsonData) {
 -        cpsDataService.replaceNodeTree(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandle, parentNodeXpath, jsonData,
 -            NO_TIMESTAMP);
 -    }
 -
      @Override
      public void updateDmiRegistrationAndSyncModule(final DmiPluginRegistration dmiPluginRegistration) {
          dmiPluginRegistration.validateDmiPluginRegistration();
      }
  
      @Override
-     public void writeResourceDataPassThroughRunningForCmHandle(final String cmHandle,
+     public Object writeResourceDataPassThroughRunningForCmHandle(final String cmHandle,
                                                                 final String resourceIdentifier,
                                                                 final OperationEnum operation,
                                                                 final String requestData,
                                                                 final String dataType) {
-         handleResponse(
+         return handleResponse(
              dmiDataOperations.writeResourceDataPassThroughRunningFromDmi(
                  cmHandle, resourceIdentifier, operation, requestData, dataType),
              "Not able to " + operation + " resource data.");