Async: NCMP Rest impl. including Request ID generation
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / NetworkCmProxyDataService.java
index ec816ed..cbd0756 100644 (file)
@@ -1,8 +1,9 @@
 /*
  *  ============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) 2022 Bell Canada
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -25,10 +26,9 @@ 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.ncmp.api.models.DmiPluginRegistrationResponse;
+import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
 import org.onap.cps.spi.model.ModuleReference;
 
 /*
@@ -36,119 +36,59 @@ 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 dmiPluginRegistration Dmi Plugin Registration
+     * @return dmiPluginRegistrationResponse
      */
-    void updateDmiRegistrationAndSyncModule(DmiPluginRegistration dmiPluginRegistration);
+    DmiPluginRegistrationResponse updateDmiRegistrationAndSyncModule(DmiPluginRegistration dmiPluginRegistration);
 
     /**
      * Get resource data for data store pass-through operational
      * using dmi.
      *
-     * @param cmHandle cm handle
+     * @param cmHandleId cm handle identifier
      * @param resourceIdentifier resource identifier
-     * @param acceptParamInHeader accept param
      * @param optionsParamInQuery options query
+     * @param topicParamInQuery topic name for (triggering) async responses
+     * @param requestId unique requestId for async request
      * @return {@code Object} resource data
      */
-    Object getResourceDataOperationalForCmHandle(String cmHandle,
+    Object getResourceDataOperationalForCmHandle(String cmHandleId,
                                                  String resourceIdentifier,
-                                                 String acceptParamInHeader,
-                                                 String optionsParamInQuery);
+                                                 String optionsParamInQuery,
+                                                 String topicParamInQuery,
+                                                 String requestId);
 
     /**
      * Get resource data for data store pass-through running
      * using dmi.
      *
-     * @param cmHandle cm handle
+     * @param cmHandleId cm handle identifier
      * @param resourceIdentifier resource identifier
-     * @param acceptParamInHeader accept param
      * @param optionsParamInQuery options query
+     * @param topicParamInQuery topic name for (triggering) async responses
+     * @param requestId unique requestId for async request
      * @return {@code Object} resource data
      */
-    Object getResourceDataPassThroughRunningForCmHandle(String cmHandle,
+    Object getResourceDataPassThroughRunningForCmHandle(String cmHandleId,
                                                         String resourceIdentifier,
-                                                        String acceptParamInHeader,
-                                                        String optionsParamInQuery);
+                                                        String optionsParamInQuery,
+                                                        String topicParamInQuery,
+                                                        String requestId);
 
     /**
      * Write resource data for data store pass-through running
      * using dmi for given cm-handle.
-     *  @param cmHandle cm handle
+     *  @param cmHandleId cm handle identifier
      * @param resourceIdentifier resource identifier
      * @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 cmHandleId,
                                                         String resourceIdentifier,
                                                         OperationEnum operation,
                                                         String requestBody,
@@ -157,10 +97,10 @@ public interface NetworkCmProxyDataService {
     /**
      * Retrieve module references for the given cm handle.
      *
-     * @param cmHandle cm handle
+     * @param cmHandleId cm handle identifier
      * @return a collection of modules names and revisions
      */
-    Collection<ModuleReference> getYangResourcesModuleReferences(String cmHandle);
+    Collection<ModuleReference> getYangResourcesModuleReferences(String cmHandleId);
 
     /**
      * Query cm handle identifiers for the given collection of module names.
@@ -171,4 +111,12 @@ public interface NetworkCmProxyDataService {
      */
     Collection<String> executeCmHandleHasAllModulesSearch(Collection<String> moduleNames);
 
+    /**
+     * Query cm handle details by cm handle's name.
+     *
+     * @param cmHandleId cm handle identifier
+     * @return a collection of cm handle details.
+     */
+    NcmpServiceCmHandle getNcmpServiceCmHandle(String cmHandleId);
+
 }