From 5f72a385593d3ca906c8f3a6c382db213fce206c Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Wed, 16 Nov 2022 15:28:44 +0000 Subject: Update participans to swagger v3 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 --- .../element/main/rest/AbstractRestController.java | 43 +----- .../acm/element/main/rest/AcElementController.java | 157 ++++++--------------- .../kubernetes/controller/ChartController.java | 52 +++---- 3 files changed, 80 insertions(+), 172 deletions(-) (limited to 'participant') diff --git a/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AbstractRestController.java b/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AbstractRestController.java index 7c963b6da..369342b11 100644 --- a/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AbstractRestController.java +++ b/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AbstractRestController.java @@ -20,13 +20,6 @@ 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 diff --git a/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AcElementController.java b/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AcElementController.java index 7a8662c34..afe864edc 100644 --- a/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AcElementController.java +++ b/participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/main/rest/AcElementController.java @@ -20,14 +20,12 @@ 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 deleteConfig() { + public ResponseEntity deleteConfig() { configService.deleteConfig(); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } -} \ No newline at end of file +} diff --git a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/controller/ChartController.java b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/controller/ChartController.java index 7d0c6c0d8..1186b7bf5 100644 --- a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/controller/ChartController.java +++ b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/controller/ChartController.java @@ -18,13 +18,14 @@ 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 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 installChart(@RequestBody InstallationInfo info) + @Operation(summary = "Install the chart") + @ApiResponses(value = {@ApiResponse(responseCode = "201", description = "chart Installed")}) + public ResponseEntity 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 uninstallChart(@PathVariable("name") String name, + @Operation(summary = "Uninstall the Chart") + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "chart Uninstalled")}) + public ResponseEntity 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 onboardChart(@RequestPart("chart") MultipartFile chartFile, + @Operation(summary = "Onboard the Chart") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Chart Onboarded")}) + public ResponseEntity 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 deleteChart(@PathVariable("name") String name, + @Operation(summary = "Delete the chart") + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Chart Deleted")}) + public ResponseEntity 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 configureRepo(@RequestBody String repo) + @ApiResponses( + value = {@ApiResponse(responseCode = "201", description = "Repository added"), + @ApiResponse(responseCode = "409", description = "Repository already Exist")}) + public ResponseEntity configureRepo(@RequestBody String repo) throws ServiceException, IOException { HelmRepository repository; try { -- cgit 1.2.3-korg