diff options
22 files changed, 113 insertions, 237 deletions
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 @@ <!-- ============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. @@ -64,10 +65,6 @@ <groupId>io.swagger.core.v3</groupId> <artifactId>swagger-annotations</artifactId> </dependency> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - </dependency> <!-- T E S T D E P E N D E N C I E S --> <dependency> <groupId>org.codehaus.groovy</groupId> @@ -119,6 +116,7 @@ <artifactId>swagger-codegen-maven-plugin</artifactId> <executions> <execution> + <id>code-gen</id> <goals> <goal>generate</goal> </goals> @@ -139,6 +137,29 @@ </execution> </executions> </plugin> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>copy-resources</id> + <phase>compile</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${project.basedir}/target/classes/static/api-docs/cps-ncmp</outputDirectory> + <resources> + <resource> + <directory>${project.basedir}/target/generated-sources/swagger/</directory> + <includes> + <include>openapi.yaml</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </project> 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 65946a9f97..73ccd6e3c2 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 @@ <groupId>io.swagger.codegen.v3</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>3.0.27</version> + <executions> + <execution> + <id>openapi-yaml-gen</id> + <goals> + <goal>generate</goal> + </goals> + <phase>compile</phase> + <configuration> + <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec> + <language>openapi-yaml</language> + </configuration> + </execution> + </executions> </plugin> <plugin> <groupId>com.github.spotbugs</groupId> diff --git a/cps-rest/src/main/resources/static/components.yml b/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 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 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 index f45f3f41ae..f45f3f41ae 100644 --- a/cps-rest/src/main/resources/static/cpsQuery.yml +++ b/cps-rest/docs/openapi/cpsQuery.yml diff --git a/cps-rest/src/main/resources/static/openapi.yml b/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========================================================= --> @@ -67,10 +69,6 @@ <artifactId>swagger-annotations</artifactId> </dependency> <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - </dependency> - <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.5.9</version> @@ -130,11 +128,12 @@ <artifactId>swagger-codegen-maven-plugin</artifactId> <executions> <execution> + <id>code-gen</id> <goals> <goal>generate</goal> </goals> <configuration> - <inputSpec>${project.basedir}/src/main/resources/static/openapi.yml</inputSpec> + <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec> <invokerPackage>org.onap.cps.rest.controller</invokerPackage> <modelPackage>org.onap.cps.rest.model</modelPackage> <apiPackage>org.onap.cps.rest.api</apiPackage> @@ -150,6 +149,29 @@ </execution> </executions> </plugin> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>copy-resources</id> + <phase>compile</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${project.basedir}/target/classes/static/api-docs/cps-core</outputDirectory> + <resources> + <resource> + <directory>${project.basedir}/target/generated-sources/swagger/</directory> + <includes> + <include>openapi.yaml</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </project> 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,28 +26,12 @@ 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.
*/
@Bean
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"); @@ -71,17 +71,6 @@ public class AdminRestController implements CpsAdminApi { } /** - * Delete a dataspace based on a given name. - * - * @param dataspaceName dataspace name - * @return a {@Link ResponseEntity} of {@link HttpStatus} NOT_IMPLEMENTED - */ - @Override - public ResponseEntity<Object> deleteDataspace(final String dataspaceName) { - return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); - } - - /** * Create a {@link SchemaSet}. * * @param multipartFile multipart file 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 @@ -68,11 +68,6 @@ public class DataRestController implements CpsDataApi { } @Override - public ResponseEntity<Object> getNodesByDataspace(final String dataspaceName) { - return null; - } - - @Override public ResponseEntity<Object> getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName, final String xpath, final Boolean includeDescendants) { final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(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:<port-number>/swagger-ui/index.html` -* `http://localhost:<port-number>/v3/api-docs?group=cps-docket` +* `http://localhost:<port-number>/swagger-ui.html` +* `http://localhost:<port-number>/api-docs/cps-core/openapi.yaml` +* `http://localhost:<port-number>/api-docs/cps-ncmp/openapi.yaml` with <port-number> 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 |