Update participans to swagger v3 93/132293/1
authorFrancescoFioraEst <francesco.fiora@est.tech>
Wed, 16 Nov 2022 15:28:44 +0000 (15:28 +0000)
committerFrancesco Fiora <francesco.fiora@est.tech>
Thu, 17 Nov 2022 16:21:27 +0000 (16:21 +0000)
Participant Kubernetes Rest Controller is enabled only for testing
and ACM Element is an application for testing,
so they not need yaml endpoints definition and Contract testing.

Issue-ID: POLICY-4459
Change-Id: Ibdab1b1fb6522e615eba182e8e3a332dec5b96fc
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AbstractRestController.java
participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AcElementController.java
participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/controller/ChartController.java

index 7c963b6..369342b 100644 (file)
 
 package org.onap.policy.clamp.acm.element.main.rest;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.BasicAuthDefinition;
-import io.swagger.annotations.Info;
-import io.swagger.annotations.SecurityDefinition;
-import io.swagger.annotations.SwaggerDefinition;
-import io.swagger.annotations.Tag;
-import java.net.HttpURLConnection;
 import javax.ws.rs.core.MediaType;
 import org.springframework.web.bind.annotation.RequestMapping;
 
@@ -41,32 +34,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
             AbstractRestController.APPLICATION_YAML
         }
 )
-@Api(value = "AC Element API")
-@SwaggerDefinition(
-        info = @Info(
-                description = "AC Element",
-                version = "v1.0",
-                title = "AC Element"
-        ),
-        consumes = {MediaType.APPLICATION_JSON, AbstractRestController.APPLICATION_YAML},
-        produces = {MediaType.APPLICATION_JSON, AbstractRestController.APPLICATION_YAML},
-        schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS},
-        tags = {
-            @Tag(name = "acelement", description = "Ac element implementation")
-        },
-        securityDefinition = @SecurityDefinition(basicAuthDefinitions = {@BasicAuthDefinition(key = "basicAuth")})
-)
 // @formatter:on
 public abstract class AbstractRestController {
     public static final String APPLICATION_YAML = "application/yaml";
 
-    public static final String EXTENSION_NAME = "interface info";
-
     public static final String API_VERSION_NAME = "api-version";
-    public static final String API_VERSION = "1.0.0";
-
-    public static final String LAST_MOD_NAME = "last-mod-release";
-    public static final String LAST_MOD_RELEASE = "Dublin";
 
     public static final String VERSION_MINOR_NAME = "X-MinorVersion";
     public static final String VERSION_MINOR_DESCRIPTION =
@@ -83,14 +55,13 @@ public abstract class AbstractRestController {
     public static final String REQUEST_ID_NAME = "X-ONAP-RequestID";
     public static final String REQUEST_ID_HDR_DESCRIPTION = "Used to track REST transactions for logging purpose";
 
-    public static final String AUTHORIZATION_TYPE = "basicAuth";
-
-    public static final int AUTHENTICATION_ERROR_CODE = HttpURLConnection.HTTP_UNAUTHORIZED;
-    public static final int AUTHORIZATION_ERROR_CODE = HttpURLConnection.HTTP_FORBIDDEN;
-    public static final int SERVER_ERROR_CODE = HttpURLConnection.HTTP_INTERNAL_ERROR;
+    public static final String OK_CODE = "200";
+    public static final String CREATED_CODE = "201";
+    public static final String NO_CONTENT_CODE = "204";
+    public static final String AUTHENTICATION_ERROR_CODE = "401";
+    public static final String BAD_REQUEST_ERROR_CODE = "400";
 
     public static final String AUTHENTICATION_ERROR_MESSAGE = "Authentication Error";
-    public static final String AUTHORIZATION_ERROR_MESSAGE = "Authorization Error";
-    public static final String SERVER_ERROR_MESSAGE = "Internal Server Error";
-
+    public static final String BAD_REQUEST_ERROR_MESSAGE = "Bad request";
+    public static final String SERVER_OK_MESSAGE = "Success";
 }
\ No newline at end of file
index 7a8662c..afe864e 100644 (file)
 
 package org.onap.policy.clamp.acm.element.main.rest;
 
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.Extension;
-import io.swagger.annotations.ExtensionProperty;
-import io.swagger.annotations.ResponseHeader;
-import java.util.UUID;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.headers.Header;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
 import lombok.RequiredArgsConstructor;
 import org.onap.policy.clamp.acm.element.service.ConfigService;
 import org.onap.policy.clamp.models.acm.messages.rest.element.ElementConfig;
@@ -46,7 +44,6 @@ public class AcElementController extends AbstractRestController {
 
     private final ConfigService configService;
 
-
     /**
      * REST endpoint to get the existing element config.
      *
@@ -54,40 +51,21 @@ public class AcElementController extends AbstractRestController {
      */
     // @formatter:off
     @GetMapping(path = "/config", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(
-            value = "Return the element config",
-            response = ElementConfig.class,
-            tags = {
-                "Clamp Automation Composition AC Element Impl API"
-            },
-            authorizations = @Authorization(value = AUTHORIZATION_TYPE),
-            responseHeaders = {
-                @ResponseHeader(
-                    name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
-                    response = String.class),
-                @ResponseHeader(
-                    name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
-                    response = String.class),
-                @ResponseHeader(
-                    name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
-                    response = String.class),
-                @ResponseHeader(
-                    name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
-                    response = UUID.class)},
-            extensions = {
-                @Extension(
-                    name = EXTENSION_NAME,
-                    properties = {
-                        @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
-                        @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
-                    }
-                    )
-            })
+    @Operation(summary = "Return the element config",
+        tags = { "Clamp Automation Composition AC Element Impl API" })
     @ApiResponses(
         value = {
-            @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
-            @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
-            @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
+            @ApiResponse(responseCode = OK_CODE, description = SERVER_OK_MESSAGE,
+                    content = @Content(schema = @Schema(implementation = ElementConfig.class)),
+                    headers = {
+                        @Header(name = API_VERSION_NAME),
+                        @Header(name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION),
+                        @Header(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION),
+                        @Header(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION),
+                        @Header(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION),
+                        @Header(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION)
+                    }),
+            @ApiResponse(responseCode = AUTHENTICATION_ERROR_CODE, description = AUTHENTICATION_ERROR_MESSAGE)
         }
     )
     // @formatter:on
@@ -102,43 +80,23 @@ public class AcElementController extends AbstractRestController {
      */
     // @formatter:off
     @PostMapping(path = "/activate", consumes = MediaType.APPLICATION_JSON_VALUE,
-         produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(
-        value = "Activates the element config",
-        response = ElementConfig.class,
-        tags = {
-            "Clamp Automation Composition AC Element Impl API"
-        },
-        authorizations = @Authorization(value = AUTHORIZATION_TYPE),
-        responseHeaders = {
-            @ResponseHeader(
-                name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
-                response = String.class),
-            @ResponseHeader(
-                name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
-                response = String.class),
-            @ResponseHeader(
-                name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
-                response = String.class),
-            @ResponseHeader(
-                name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
-                response = UUID.class)
-            },
-        extensions = {
-            @Extension (
-                name = EXTENSION_NAME,
-                properties = {
-                    @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
-                    @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
-                }
-                )
-        }
+        produces = MediaType.APPLICATION_JSON_VALUE)
+    @Operation(summary = "Activates the element config",
+        tags = { "Clamp Automation Composition AC Element Impl API" }
     )
     @ApiResponses(
         value = {
-            @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
-            @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
-            @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
+            @ApiResponse(responseCode = CREATED_CODE, description = SERVER_OK_MESSAGE,
+                    headers = {
+                        @Header(name = API_VERSION_NAME),
+                        @Header(name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION),
+                        @Header(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION),
+                        @Header(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION),
+                        @Header(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION),
+                        @Header(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION)
+                    }),
+            @ApiResponse(responseCode = AUTHENTICATION_ERROR_CODE, description = AUTHENTICATION_ERROR_MESSAGE),
+            @ApiResponse(responseCode = BAD_REQUEST_ERROR_CODE, description = BAD_REQUEST_ERROR_MESSAGE)
         }
     )
     // formatter:on
@@ -154,47 +112,26 @@ public class AcElementController extends AbstractRestController {
      */
     // @formatter:off
     @DeleteMapping(path = "/deactivate")
-    @ApiOperation(
-        value = "Delete the element config",
-        response = ElementConfig.class,
-        tags = {
-            "Clamp Automation Composition AC Element Impl API"
-        },
-        authorizations = @Authorization(value = AUTHORIZATION_TYPE),
-        responseHeaders = {
-            @ResponseHeader(
-                name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
-                response = String.class),
-            @ResponseHeader(
-                name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
-                response = String.class),
-            @ResponseHeader(
-                name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
-                response = String.class),
-            @ResponseHeader(
-                name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
-                response = UUID.class)},
-        extensions = {
-            @Extension(
-                name = EXTENSION_NAME,
-                properties = {
-                    @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
-                    @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
-                }
-                )
-        }
+    @Operation(summary = "Delete the element config",
+        tags = { "Clamp Automation Composition AC Element Impl API" }
     )
     @ApiResponses(
         value = {
-            @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
-            @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
-            @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
+            @ApiResponse(responseCode = NO_CONTENT_CODE, description = SERVER_OK_MESSAGE,
+                    headers = {
+                        @Header(name = API_VERSION_NAME),
+                        @Header(name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION),
+                        @Header(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION),
+                        @Header(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION),
+                        @Header(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION),
+                        @Header(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION)
+                    }),
+            @ApiResponse(responseCode = AUTHENTICATION_ERROR_CODE, description = AUTHENTICATION_ERROR_MESSAGE)
         }
     )
     // @formatter:on
-    public ResponseEntity<Object> deleteConfig()  {
+    public ResponseEntity<Void> deleteConfig() {
         configService.deleteConfig();
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-
     }
-}
\ No newline at end of file
+}
index 7d0c6c0..1186b7b 100644 (file)
 
 package org.onap.policy.clamp.acm.participant.kubernetes.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
+import lombok.RequiredArgsConstructor;
 import org.onap.policy.clamp.acm.participant.kubernetes.exception.ServiceException;
 import org.onap.policy.clamp.acm.participant.kubernetes.models.ChartInfo;
 import org.onap.policy.clamp.acm.participant.kubernetes.models.ChartList;
@@ -35,7 +36,6 @@ import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -51,15 +51,15 @@ import org.springframework.web.bind.annotation.RequestPart;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+@RequiredArgsConstructor
 @RestController("chartController")
 @ConditionalOnExpression("${chart.api.enabled:false}")
 @RequestMapping("helm")
-@Api(tags = {"k8s-participant"})
+@Tag(name = "k8s-participant")
 public class ChartController {
     private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-    @Autowired
-    private ChartService chartService;
+    private final ChartService chartService;
 
     private static final StandardCoder CODER = new StandardCoder();
 
@@ -69,8 +69,8 @@ public class ChartController {
      * @return List of charts installed
      */
     @GetMapping(path = "/charts", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Return all Charts")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "chart List")})
+    @Operation(summary = "Return all Charts")
+    @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "chart List")})
     public ResponseEntity<ChartList> getAllCharts() {
         return new ResponseEntity<>(ChartList.builder().charts(new ArrayList<>(chartService.getAllCharts())).build(),
                 HttpStatus.OK);
@@ -86,9 +86,9 @@ public class ChartController {
      */
     @PostMapping(path = "/install", consumes = MediaType.APPLICATION_JSON_VALUE,
             produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Install the chart")
-    @ApiResponses(value = {@ApiResponse(code = 201, message = "chart Installed")})
-    public ResponseEntity<Object> installChart(@RequestBody InstallationInfo info)
+    @Operation(summary = "Install the chart")
+    @ApiResponses(value = {@ApiResponse(responseCode = "201", description = "chart Installed")})
+    public ResponseEntity<Void> installChart(@RequestBody InstallationInfo info)
             throws ServiceException, IOException {
         ChartInfo chart = chartService.getChart(info.getName(), info.getVersion());
         if (chart == null) {
@@ -108,9 +108,9 @@ public class ChartController {
      * @throws ServiceException in case of error.
      */
     @DeleteMapping(path = "/uninstall/{name}/{version}", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Uninstall the Chart")
-    @ApiResponses(value = {@ApiResponse(code = 201, message = "chart Uninstalled")})
-    public ResponseEntity<Object> uninstallChart(@PathVariable("name") String name,
+    @Operation(summary = "Uninstall the Chart")
+    @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "chart Uninstalled")})
+    public ResponseEntity<Void> uninstallChart(@PathVariable("name") String name,
             @PathVariable("version") String version) throws ServiceException {
         ChartInfo chart = chartService.getChart(name, version);
         if (chart == null) {
@@ -133,9 +133,9 @@ public class ChartController {
      */
     @PostMapping(path = "/onboard/chart", consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
             produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Onboard the Chart")
-    @ApiResponses(value = {@ApiResponse(code = 201, message = "Chart Onboarded")})
-    public ResponseEntity<String> onboardChart(@RequestPart("chart") MultipartFile chartFile,
+    @Operation(summary = "Onboard the Chart")
+    @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Chart Onboarded")})
+    public ResponseEntity<Void> onboardChart(@RequestPart("chart") MultipartFile chartFile,
             @RequestParam(name = "values", required = false) MultipartFile overrideFile,
             @RequestParam("info") String infoJson) throws ServiceException, IOException {
 
@@ -158,9 +158,9 @@ public class ChartController {
      * @return Status of operation
      */
     @DeleteMapping(path = "/chart/{name}/{version}")
-    @ApiOperation(value = "Delete the chart")
-    @ApiResponses(value = {@ApiResponse(code = 204, message = "Chart Deleted")})
-    public ResponseEntity<Object> deleteChart(@PathVariable("name") String name,
+    @Operation(summary = "Delete the chart")
+    @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Chart Deleted")})
+    public ResponseEntity<Void> deleteChart(@PathVariable("name") String name,
             @PathVariable("version") String version) {
 
         ChartInfo chart = chartService.getChart(name, version);
@@ -182,10 +182,10 @@ public class ChartController {
      */
     @PostMapping(path = "/repo", consumes = MediaType.APPLICATION_JSON_VALUE,
             produces = MediaType.APPLICATION_JSON_VALUE)
-    @ApiOperation(value = "Configure helm repository")
-    @ApiResponses(value = {@ApiResponse(code = 201, message = "Repository added"),
-                           @ApiResponse(code = 409, message = "Repository already Exist")})
-    public ResponseEntity<Object> configureRepo(@RequestBody String repo)
+    @ApiResponses(
+            value = {@ApiResponse(responseCode = "201", description = "Repository added"),
+                @ApiResponse(responseCode = "409", description = "Repository already Exist")})
+    public ResponseEntity<String> configureRepo(@RequestBody String repo)
             throws ServiceException, IOException {
         HelmRepository repository;
         try {