# ============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:
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'
/*
* ============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
* ================================================================================
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;
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);
}
/**
/*
* ============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");
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,
/*
* ============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
* ================================================================================
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;
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
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.");