From: Renu Kumari Date: Mon, 30 Aug 2021 15:50:43 +0000 (-0400) Subject: Add ncmp endpoints to swagger-ui X-Git-Tag: 2.0.0~14^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=4d520016514834bef903401518be5989b390874a;p=cps.git Add ncmp endpoints to swagger-ui - added ncmp-enpoints to swagger-ui - removed springfox dependencies - removed Docket configuration as we are loading ui from openapi.yml - removed endpoints which are not implemented - Fixed ncmp basepath as per CPS-616 Issue-ID: CPS-601 Issue-ID: CPS-616 Signed-off-by: Renu Kumari Change-Id: I03c7789f48a12d3ffd5fcb934d7ba6347d4044e4 --- diff --git a/cps-application/src/main/resources/application.yml b/cps-application/src/main/resources/application.yml index 39309d842b..82c6e0aed1 100644 --- a/cps-application/src/main/resources/application.yml +++ b/cps-application/src/main/resources/application.yml @@ -24,7 +24,7 @@ server: rest: api: cps-base-path: /cps/api - ncmp-base-path: /cps-ncmp/api + ncmp-base-path: /ncmp spring: main: @@ -84,12 +84,17 @@ notification: springdoc: swagger-ui: - url: /openapi.yml - path: /swagger-ui/index.html + disable-swagger-default-url: true + urlsPrimaryName: cps-core + urls: + - name: cps-core + url: /api-docs/cps-core/openapi.yaml + - name: cps-ncmp + url: /api-docs/cps-ncmp/openapi.yaml security: # comma-separated uri patterns which do not require authorization - permit-uri: /manage/**,/swagger-ui/**,/swagger-resources/**,/v3/api-docs + permit-uri: /manage/**,/swagger-ui/**,/swagger-resources/**,/api-docs auth: username: ${CPS_USERNAME} password: ${CPS_PASSWORD} diff --git a/cps-ncmp-rest/docs/openapi/ncmproxy.yml b/cps-ncmp-rest/docs/openapi/ncmproxy.yml index 8eed9b37b1..138337d24e 100755 --- a/cps-ncmp-rest/docs/openapi/ncmproxy.yml +++ b/cps-ncmp-rest/docs/openapi/ncmproxy.yml @@ -181,7 +181,7 @@ listNodeByCmHandleAndXpath: updateDmiRegistration: post: - description: Register a DMI Plugin with any new CM Handles. + description: Register a DMI Plugin with any new, updated or removed CM Handles. tags: - network-cm-proxy summary: DMI notifies NCMP of new CM Handles diff --git a/cps-ncmp-rest/docs/openapi/openapi.yml b/cps-ncmp-rest/docs/openapi/openapi.yml index 0dfe3c83a7..8d8684a355 100755 --- a/cps-ncmp-rest/docs/openapi/openapi.yml +++ b/cps-ncmp-rest/docs/openapi/openapi.yml @@ -1,6 +1,7 @@ # ============LICENSE_START======================================================= # Copyright (C) 2021 Nordix Foundation # Modifications Copyright (C) 2021 Pantheon.tech +# Modifications Copyright (C) 2021 Bell Canada # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +24,7 @@ info: description: NCMP to CPS Proxy API version: "1.0" servers: - - url: //localhost:8088/ + - url: /ncmp paths: /v1/cm-handles/{cm-handle}/node: $ref: 'ncmproxy.yml#/nodeByCmHandleAndXpath' @@ -37,7 +38,7 @@ paths: /v1/cm-handles/{cm-handle}/nodes: $ref: 'ncmproxy.yml#/nodesByCmHandleAndXpath' - /ncmp-dmi/v1/ch: + /v1/ch: $ref: 'ncmproxy.yml#/updateDmiRegistration' /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}: diff --git a/cps-ncmp-rest/pom.xml b/cps-ncmp-rest/pom.xml index dbe1af0973..d3de688e23 100644 --- a/cps-ncmp-rest/pom.xml +++ b/cps-ncmp-rest/pom.xml @@ -2,6 +2,7 @@ org.codehaus.groovy @@ -119,6 +116,7 @@ swagger-codegen-maven-plugin + code-gen generate @@ -139,6 +137,29 @@ + + maven-resources-plugin + + + copy-resources + compile + + copy-resources + + + ${project.basedir}/target/classes/static/api-docs/cps-ncmp + + + ${project.basedir}/target/generated-sources/swagger/ + + openapi.yaml + + + + + + + diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/config/NetworkCmProxyConfig.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/config/NetworkCmProxyConfig.java deleted file mode 100644 index 300765d425..0000000000 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/config/NetworkCmProxyConfig.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Pantheon.tech - * Modifications (C) 2021 Nordix Foundation - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.ncmp.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; - -@Configuration -public class NetworkCmProxyConfig { - - /** - * Swagger-ui configuration. - */ - @Bean("ncmp-docket") - public Docket api() { - return new Docket(DocumentationType.OAS_30) - .groupName("ncmp-docket") - .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build(); - } - -} \ No newline at end of file diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/config/NetworkCmProxyConfigSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/config/NetworkCmProxyConfigSpec.groovy deleted file mode 100644 index 4b0e2561e5..0000000000 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/config/NetworkCmProxyConfigSpec.groovy +++ /dev/null @@ -1,33 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 highstreet technologies GmbH - * Modification Copyright (C) 2021 Nordix Foundation - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.ncmp.config - -import spock.lang.Specification -import springfox.documentation.spring.web.plugins.Docket - -class NetworkCmProxyConfigSpec extends Specification { - def objectUnderTest = new NetworkCmProxyConfig() - - def 'NetworkCmProxy configuration has a Docket API.'() { - expect: 'the NetworkCmProxy configuration has a Docket API' - objectUnderTest.api() instanceof Docket - } -} diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy index 1a2d3a204f..4ff0ca421f 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy @@ -3,6 +3,7 @@ * Copyright (C) 2021 Pantheon.tech * Modification Copyright (C) 2021 highstreet technologies GmbH * Modification Copyright (C) 2021 Nordix Foundation + * Modification Copyright (C) 2021 Bell Canada. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,7 +43,7 @@ import org.springframework.http.MediaType import org.springframework.test.web.servlet.MockMvc import spock.lang.Specification -@WebMvcTest +@WebMvcTest(NetworkCmProxyController) class NetworkCmProxyControllerSpec extends Specification { @Autowired @@ -54,17 +55,8 @@ class NetworkCmProxyControllerSpec extends Specification { @SpringBean ObjectMapper objectMapper = new ObjectMapper() - @Value('${rest.api.ncmp-base-path}') - def basePath - - def deprecatedDataNodeBaseEndPoint - - def ncmpDmiEndpoint - - def setup() { - deprecatedDataNodeBaseEndPoint = "$basePath/v1" - ncmpDmiEndpoint = "$basePath/ncmp-dmi/v1" - } + @Value('${rest.api.ncmp-base-path}/v1') + def ncmpBasePathV1 def cmHandle = 'some handle' def xpath = 'some xpath' @@ -75,7 +67,7 @@ class NetworkCmProxyControllerSpec extends Specification { def cpsPath = 'some cps-path' mockNetworkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, expectedCpsDataServiceOption) >> [dataNode] and: 'the query endpoint' - def dataNodeEndpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes/query" + def dataNodeEndpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes/query" when: 'query data nodes API is invoked' def response = mvc.perform(get(dataNodeEndpoint) .param('cps-path', cpsPath) @@ -97,7 +89,7 @@ class NetworkCmProxyControllerSpec extends Specification { def jsonData = 'json data' when: 'post request is performed' def response = mvc.perform( - post("$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes") + post("$ncmpBasePathV1/cm-handles/$cmHandle/nodes") .contentType(MediaType.APPLICATION_JSON) .content(jsonData) .param('xpath', reqXpath) @@ -119,7 +111,7 @@ class NetworkCmProxyControllerSpec extends Specification { def parentNodeXpath = 'parent node xpath' when: 'post request is performed' def response = mvc.perform( - post("$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/list-node") + post("$ncmpBasePathV1/cm-handles/$cmHandle/list-node") .contentType(MediaType.APPLICATION_JSON) .content(jsonData) .param('xpath', parentNodeXpath) @@ -134,7 +126,7 @@ class NetworkCmProxyControllerSpec extends Specification { given: 'json data' def jsonData = 'json data' and: 'the query endpoint' - def endpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes" + def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes" when: 'patch request is performed' def response = mvc.perform( patch(endpoint) @@ -152,7 +144,7 @@ class NetworkCmProxyControllerSpec extends Specification { given: 'json data' def jsonData = 'json data' and: 'the query endpoint' - def endpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes" + def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes" when: 'put request is performed' def response = mvc.perform( put(endpoint) @@ -172,7 +164,7 @@ class NetworkCmProxyControllerSpec extends Specification { def dataNode = new DataNodeBuilder().withXpath(xpath).withLeaves(["leaf": "value"]).build() mockNetworkCmProxyDataService.getDataNode(cmHandle, xpath, OMIT_DESCENDANTS) >> dataNode and: 'the query endpoint' - def endpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/node" + def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/node" when: 'get request is performed through REST API' def response = mvc.perform(get(endpoint).param('xpath', xpath)).andReturn().response then: 'a success response is returned' @@ -186,7 +178,7 @@ class NetworkCmProxyControllerSpec extends Specification { def jsonData = TestUtils.getResourceFileContent('dmi-registration.json') when: 'post request is performed' def response = mvc.perform( - post("$ncmpDmiEndpoint/ch") + post("$ncmpBasePathV1/ch") .contentType(MediaType.APPLICATION_JSON) .content(jsonData) ).andReturn().response @@ -198,7 +190,7 @@ class NetworkCmProxyControllerSpec extends Specification { def 'Get Resource Data from pass-through operational.' () { given: 'resource data url' - def getUrl = "$basePath/v1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" + + def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" + "/testResourceIdentifier?fields=testFields&depth=5" when: 'get data resource request is performed' def response = mvc.perform( @@ -218,7 +210,7 @@ class NetworkCmProxyControllerSpec extends Specification { def 'Get Resource Data from pass-through running.' () { given: 'resource data url' - def getUrl = "$basePath/v1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + + def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + "/testResourceIdentifier?fields=testFields&depth=5" and: 'ncmp service returns json object' mockNetworkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle('testCmHandle', @@ -240,7 +232,7 @@ class NetworkCmProxyControllerSpec extends Specification { def 'Create Resource Data from pass-through running using POST.' () { given: 'resource data url' - def getUrl = "$basePath/v1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + + def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + "/testResourceIdentifier" when: 'get data resource request is performed' def response = mvc.perform( diff --git a/cps-ncmp-rest/src/test/resources/application.yml b/cps-ncmp-rest/src/test/resources/application.yml index 8ffb8827f7..848738a764 100644 --- a/cps-ncmp-rest/src/test/resources/application.yml +++ b/cps-ncmp-rest/src/test/resources/application.yml @@ -1,5 +1,6 @@ # ============LICENSE_START======================================================= # Copyright (C) 2021 Nordix Foundation +# Modifications Copyright (C) 2021 Bell Canada. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,5 +19,5 @@ rest: api: - ncmp-base-path: /cps-ncmp/api + ncmp-base-path: /ncmp spring: diff --git a/cps-ncmp-service/src/test/resources/application.yml b/cps-ncmp-service/src/test/resources/application.yml deleted file mode 100644 index 8ffb8827f7..0000000000 --- a/cps-ncmp-service/src/test/resources/application.yml +++ /dev/null @@ -1,22 +0,0 @@ -# ============LICENSE_START======================================================= -# Copyright (C) 2021 Nordix Foundation -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= - -rest: - api: - ncmp-base-path: /cps-ncmp/api -spring: diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml index 46594dabe9..e8861006e0 100755 --- a/cps-parent/pom.xml +++ b/cps-parent/pom.xml @@ -123,6 +123,19 @@ io.swagger.codegen.v3 swagger-codegen-maven-plugin 3.0.27 + + + openapi-yaml-gen + + generate + + compile + + ${project.basedir}/docs/openapi/openapi.yml + openapi-yaml + + + com.github.spotbugs diff --git a/cps-rest/src/main/resources/static/components.yml b/cps-rest/docs/openapi/components.yml similarity index 98% rename from cps-rest/src/main/resources/static/components.yml rename to cps-rest/docs/openapi/components.yml index 75a6f99fc9..3d2eb57e4d 100644 --- a/cps-rest/src/main/resources/static/components.yml +++ b/cps-rest/docs/openapi/components.yml @@ -12,6 +12,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= components: @@ -46,10 +48,11 @@ components: example: Dataspace with name D1 does not exist. MultipartFile: + type: object required: - file properties: - multipartFile: + file: type: string description: multipartFile format: binary diff --git a/cps-rest/src/main/resources/static/cpsAdmin.yml b/cps-rest/docs/openapi/cpsAdmin.yml similarity index 90% rename from cps-rest/src/main/resources/static/cpsAdmin.yml rename to cps-rest/docs/openapi/cpsAdmin.yml index 35b2e4ca6a..a022ef1d94 100644 --- a/cps-rest/src/main/resources/static/cpsAdmin.yml +++ b/cps-rest/docs/openapi/cpsAdmin.yml @@ -12,6 +12,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= dataspaces: @@ -33,28 +35,6 @@ dataspaces: '403': $ref: 'components.yml#/components/responses/Forbidden' -dataspaceByDataspaceName: - delete: - description: Delete the given dataspace - DRAFT - tags: - - cps-admin - summary: Delete a dataspace - operationId: deleteDataspace - parameters: - - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' - responses: - '200': - $ref: 'components.yml#/components/responses/Ok' - '204': - $ref: 'components.yml#/components/responses/NoContent' - '400': - $ref: 'components.yml#/components/responses/BadRequest' - '401': - $ref: 'components.yml#/components/responses/Unauthorized' - '403': - $ref: 'components.yml#/components/responses/Forbidden' - - schemaSet: post: description: Create a new schema set in the given dataspace diff --git a/cps-rest/src/main/resources/static/cpsData.yml b/cps-rest/docs/openapi/cpsData.yml similarity index 90% rename from cps-rest/src/main/resources/static/cpsData.yml rename to cps-rest/docs/openapi/cpsData.yml index 77673cb0f8..d456f44e6c 100644 --- a/cps-rest/src/main/resources/static/cpsData.yml +++ b/cps-rest/docs/openapi/cpsData.yml @@ -12,6 +12,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= nodeByDataspaceAndAnchor: @@ -200,27 +202,4 @@ nodesByDataspaceAndAnchor: '401': $ref: 'components.yml#/components/responses/Unauthorized' '403': - $ref: 'components.yml#/components/responses/Forbidden' - - -nodesByDataspace: - get: - description: Get all nodes for a given dataspace using an xpath or schema node identifier - DRAFT - tags: - - cps-data - summary: Get nodes - operationId: getNodesByDataspace - parameters: - - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' - responses: - '200': - $ref: 'components.yml#/components/responses/Ok' - '400': - $ref: 'components.yml#/components/responses/BadRequest' - '401': - $ref: 'components.yml#/components/responses/Unauthorized' - '403': - $ref: 'components.yml#/components/responses/Forbidden' - '404': - $ref: 'components.yml#/components/responses/NotFound' - x-codegen-request-body-name: requestBody + $ref: 'components.yml#/components/responses/Forbidden' \ No newline at end of file diff --git a/cps-rest/src/main/resources/static/cpsQuery.yml b/cps-rest/docs/openapi/cpsQuery.yml similarity index 100% rename from cps-rest/src/main/resources/static/cpsQuery.yml rename to cps-rest/docs/openapi/cpsQuery.yml diff --git a/cps-rest/src/main/resources/static/openapi.yml b/cps-rest/docs/openapi/openapi.yml similarity index 92% rename from cps-rest/src/main/resources/static/openapi.yml rename to cps-rest/docs/openapi/openapi.yml index 922cabb01e..f9881fb151 100644 --- a/cps-rest/src/main/resources/static/openapi.yml +++ b/cps-rest/docs/openapi/openapi.yml @@ -1,6 +1,7 @@ # ============LICENSE_START======================================================= # Copyright (C) 2021 Nordix Foundation # Modifications Copyright (C) 2021 Pantheon.tech +# Modifications Copyright (C) 2021 Bell Canada. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,15 +41,12 @@ tags: - name: cps-admin description: cps Admin - name: cps-data - description: cps Data + description: cps Data paths: /v1/dataspaces: $ref: 'cpsAdmin.yml#/dataspaces' - /v1/dataspaces/{dataspace-name}: - $ref: 'cpsAdmin.yml#/dataspaceByDataspaceName' - /v1/dataspaces/{dataspace-name}/anchors: $ref: 'cpsAdmin.yml#/anchorsByDataspace' @@ -70,8 +68,5 @@ paths: /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes: $ref: 'cpsData.yml#/listNodeByDataspaceAndAnchor' - /v1/dataspaces/{dataspace-name}/nodes: - $ref: 'cpsData.yml#/nodesByDataspace' - /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query: $ref: 'cpsQuery.yml#/nodesByDataspaceAndAnchorAndCpsPath' diff --git a/cps-rest/pom.xml b/cps-rest/pom.xml index 9e29074f76..c4af3803b5 100755 --- a/cps-rest/pom.xml +++ b/cps-rest/pom.xml @@ -15,6 +15,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + SPDX-License-Identifier: Apache-2.0 ============LICENSE_END========================================================= --> @@ -66,10 +68,6 @@ io.swagger.core.v3 swagger-annotations - - io.springfox - springfox-boot-starter - org.springdoc springdoc-openapi-ui @@ -130,11 +128,12 @@ swagger-codegen-maven-plugin + code-gen generate - ${project.basedir}/src/main/resources/static/openapi.yml + ${project.basedir}/docs/openapi/openapi.yml org.onap.cps.rest.controller org.onap.cps.rest.model org.onap.cps.rest.api @@ -150,6 +149,29 @@ + + maven-resources-plugin + + + copy-resources + compile + + copy-resources + + + ${project.basedir}/target/classes/static/api-docs/cps-core + + + ${project.basedir}/target/generated-sources/swagger/ + + openapi.yaml + + + + + + + diff --git a/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java b/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java index 5793d9536c..4f4501afb2 100755 --- a/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java +++ b/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java @@ -26,27 +26,11 @@ import org.modelmapper.ModelMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.retry.annotation.EnableRetry; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; @Configuration @EnableRetry public class CpsConfig { - /** - * Swagger configuration. - */ - @Bean("cps-docket") - public Docket api() { - return new Docket(DocumentationType.OAS_30) - .groupName("cps-docket") - .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()).build(); - } - /** * ModelMapper configuration. */ diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java index a1287b2bd6..55fdbbe87a 100755 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java @@ -1,7 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2020 Nordix Foundation - * Modifications Copyright (C) 2020 Bell Canada. + * Modifications Copyright (C) 2020-2021 Bell Canada. * Modifications Copyright (C) 2021 Pantheon.tech * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -70,17 +70,6 @@ public class AdminRestController implements CpsAdminApi { return new ResponseEntity<>(dataspaceName, HttpStatus.CREATED); } - /** - * Delete a dataspace based on a given name. - * - * @param dataspaceName dataspace name - * @return a {@Link ResponseEntity} of {@link HttpStatus} NOT_IMPLEMENTED - */ - @Override - public ResponseEntity deleteDataspace(final String dataspaceName) { - return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); - } - /** * Create a {@link SchemaSet}. * diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java index 0e2050e5cc..7db4e5a1b6 100755 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java @@ -67,11 +67,6 @@ public class DataRestController implements CpsDataApi { return new ResponseEntity<>(HttpStatus.CREATED); } - @Override - public ResponseEntity getNodesByDataspace(final String dataspaceName) { - return null; - } - @Override public ResponseEntity getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName, final String xpath, final Boolean includeDescendants) { diff --git a/cps-rest/src/test/groovy/org/onap/cps/config/CpsConfigSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/config/CpsConfigSpec.groovy index 6c589b1bb4..fc96f04471 100644 --- a/cps-rest/src/test/groovy/org/onap/cps/config/CpsConfigSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/config/CpsConfigSpec.groovy @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 Nordix Foundation + * Modifications Copyright (C) 2021 Bell Canada. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +23,6 @@ package org.onap.cps.config import org.modelmapper.ModelMapper import spock.lang.Specification -import springfox.documentation.spring.web.plugins.Docket class CpsConfigSpec extends Specification { def objectUnderTest = new CpsConfig() @@ -31,9 +31,4 @@ class CpsConfigSpec extends Specification { expect: 'the CPS configuration has a Model Mapper' objectUnderTest.modelMapper() instanceof ModelMapper } - - def 'CPS configuration has a Docket API'() { - expect: 'the CPS configuration has a Docket API' - objectUnderTest.api() instanceof Docket - } } diff --git a/docker-compose/README.md b/docker-compose/README.md index ceb05446b4..ae26868224 100644 --- a/docker-compose/README.md +++ b/docker-compose/README.md @@ -103,8 +103,9 @@ Here are the steps to run or debug the application from Intellij: Swagger UI and Open API specifications are available to discover service endpoints and send requests. -* `http://localhost:/swagger-ui/index.html` -* `http://localhost:/v3/api-docs?group=cps-docket` +* `http://localhost:/swagger-ui.html` +* `http://localhost:/api-docs/cps-core/openapi.yaml` +* `http://localhost:/api-docs/cps-ncmp/openapi.yaml` with being either `8080` if running the plain Java build or retrieved using following command if running from `docker-compose`: diff --git a/docs/api/swagger/openapi.yml b/docs/api/swagger/openapi.yml index c00d6ff6cb..4d64b01b85 100755 --- a/docs/api/swagger/openapi.yml +++ b/docs/api/swagger/openapi.yml @@ -1,5 +1,6 @@ # ============LICENSE_START======================================================= # Copyright (C) 2021 Nordix Foundation +# Modifications Copyright (C) 2021 Bell Canada. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -339,10 +340,11 @@ paths: content: multipart/form-data: schema: + type: object required: - file properties: - multipartFile: + file: type: string description: multipartFile format: binary