diff --git a/clouddriver-kubernetes/clouddriver-kubernetes.gradle b/clouddriver-kubernetes/clouddriver-kubernetes.gradle index c5eb43ace49..f9f3a83b6d0 100644 --- a/clouddriver-kubernetes/clouddriver-kubernetes.gradle +++ b/clouddriver-kubernetes/clouddriver-kubernetes.gradle @@ -85,6 +85,7 @@ dependencies { implementation "org.springframework.cloud:spring-cloud-config-server" implementation "io.github.resilience4j:resilience4j-retry" implementation "io.github.resilience4j:resilience4j-micrometer" + implementation "io.swagger.core.v3:swagger-annotations" testImplementation "io.spinnaker.kork:kork-test" testImplementation "org.apache.commons:commons-exec" diff --git a/clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/controllers/PodController.java b/clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/controllers/PodController.java index a302065911e..0d487a1c39a 100644 --- a/clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/controllers/PodController.java +++ b/clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/controllers/PodController.java @@ -17,8 +17,8 @@ package com.netflix.spinnaker.clouddriver.kubernetes.controllers; import com.netflix.spinnaker.clouddriver.kubernetes.provider.view.KubernetesJobProvider; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import java.util.Collections; import java.util.Map; import org.springframework.security.access.prepost.PreAuthorize; @@ -38,18 +38,25 @@ public PodController(KubernetesJobProvider jobProvider) { @PreAuthorize( "hasPermission(#application, 'APPLICATION', 'READ') and hasPermission(#account, 'ACCOUNT', 'READ')") - @ApiOperation(value = "Collect a file from a pod", notes = "Collects the file result of a pod.") + @Operation( + summary = "Collect a file from a pod", + description = "Collects the file result of a pod.") @RequestMapping( value = "/{account}/{namespace}/{podName}/{fileName:.+}", method = RequestMethod.GET) Map getFileContents( - @ApiParam(value = "Application name", required = true) @PathVariable String application, - @ApiParam(value = "Account job was created by", required = true) @PathVariable String account, - @ApiParam(value = "Namespace in which the pod is running in", required = true) @PathVariable + @Parameter(description = "Application name", required = true) @PathVariable + String application, + @Parameter(description = "Account job was created by", required = true) @PathVariable + String account, + @Parameter(description = "Namespace in which the pod is running in", required = true) + @PathVariable String namespace, - @ApiParam(value = "Unique identifier of pod being looked up", required = true) @PathVariable + @Parameter(description = "Unique identifier of pod being looked up", required = true) + @PathVariable String podName, - @ApiParam(value = "File name to look up", required = true) @PathVariable String fileName) { + @Parameter(description = "File name to look up", required = true) @PathVariable + String fileName) { Map results = kubernetesJobProvider.getFileContentsFromPod(account, namespace, podName, fileName); diff --git a/clouddriver-web/clouddriver-web.gradle b/clouddriver-web/clouddriver-web.gradle index 0c42735e249..e85c743ca3f 100644 --- a/clouddriver-web/clouddriver-web.gradle +++ b/clouddriver-web/clouddriver-web.gradle @@ -32,7 +32,7 @@ dependencies { implementation "io.spinnaker.kork:kork-moniker" implementation "commons-io:commons-io" implementation "io.reactivex:rxjava" - implementation "io.swagger:swagger-annotations" + implementation "io.swagger.core.v3:swagger-annotations" implementation "org.apache.groovy:groovy" implementation "org.slf4j:slf4j-api" implementation "org.springframework.boot:spring-boot-starter-actuator" diff --git a/clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/controllers/JobController.groovy b/clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/controllers/JobController.groovy index 9b898d175c4..986929b4d27 100644 --- a/clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/controllers/JobController.groovy +++ b/clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/controllers/JobController.groovy @@ -19,8 +19,8 @@ package com.netflix.spinnaker.clouddriver.controllers import com.netflix.spinnaker.clouddriver.model.JobProvider import com.netflix.spinnaker.clouddriver.model.JobStatus import com.netflix.spinnaker.kork.web.exceptions.NotFoundException -import io.swagger.annotations.ApiOperation -import io.swagger.annotations.ApiParam +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.Parameter import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.MessageSource import org.springframework.security.access.prepost.PreAuthorize @@ -42,12 +42,12 @@ class JobController { MessageSource messageSource @PreAuthorize("hasPermission(#application, 'APPLICATION', 'READ') and hasPermission(#account, 'ACCOUNT', 'READ')") - @ApiOperation(value = "Collect a JobStatus", notes = "Collects the output of the job.") + @Operation(summary = "Collect a JobStatus", description = "Collects the output of the job.") @RequestMapping(value = "/{account}/{location}/{id:.+}", method = RequestMethod.GET) - JobStatus collectJob(@ApiParam(value = "Application name", required = true) @PathVariable String application, - @ApiParam(value = "Account job was created by", required = true) @PathVariable String account, - @ApiParam(value = "Namespace, region, or zone job is running in", required = true) @PathVariable String location, - @ApiParam(value = "Unique identifier of job being looked up", required = true) @PathVariable String id) { + JobStatus collectJob(@Parameter(description = "Application name", required = true) @PathVariable String application, + @Parameter(description = "Account job was created by", required = true) @PathVariable String account, + @Parameter(description = "Namespace, region, or zone job is running in", required = true) @PathVariable String location, + @Parameter(description = "Unique identifier of job being looked up", required = true) @PathVariable String id) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); Collection jobMatches = jobProviders.findResults { return it.collectJob(account, location, id) @@ -59,26 +59,26 @@ class JobController { } @PreAuthorize("hasPermission(#application, 'APPLICATION', 'EXECUTE') and hasPermission(#account, 'ACCOUNT', 'WRITE')") - @ApiOperation(value = "Cancel a Job", notes = "Cancels the job.") + @Operation(summary = "Cancel a Job", description = "Cancels the job.") @RequestMapping(value = "/{account}/{location}/{id:.+}", method = RequestMethod.DELETE) - void cancelJob(@ApiParam(value = "Application name", required = true) @PathVariable String application, - @ApiParam(value = "Account job is running in", required = true) @PathVariable String account, - @ApiParam(value = "Namespace, region, or zone job is running in", required = true) @PathVariable String location, - @ApiParam(value = "Unique identifier of job to be canceled", required = true) @PathVariable String id) { + void cancelJob(@Parameter(description = "Application name", required = true) @PathVariable String application, + @Parameter(description = "Account job is running in", required = true) @PathVariable String account, + @Parameter(description = "Namespace, region, or zone job is running in", required = true) @PathVariable String location, + @Parameter(description = "Unique identifier of job to be canceled", required = true) @PathVariable String id) { jobProviders.forEach { it.cancelJob(account, location, id) } } @PreAuthorize("hasPermission(#application, 'APPLICATION', 'READ') and hasPermission(#account, 'ACCOUNT', 'READ')") - @ApiOperation(value = "Collect a file from a job", notes = "Collects the file result of a job.") + @Operation(summary = "Collect a file from a job", description = "Collects the file result of a job.") @RequestMapping(value = "/{account}/{location}/{id}/{fileName:.+}", method = RequestMethod.GET) Map getFileContents( - @ApiParam(value = "Application name", required = true) @PathVariable String application, - @ApiParam(value = "Account job was created by", required = true) @PathVariable String account, - @ApiParam(value = "Namespace, region, or zone job is running in", required = true) @PathVariable String location, - @ApiParam(value = "Unique identifier of job being looked up", required = true) @PathVariable String id, - @ApiParam(value = "File name to look up", required = true) @PathVariable String fileName + @Parameter(description = "Application name", required = true) @PathVariable String application, + @Parameter(description = "Account job was created by", required = true) @PathVariable String account, + @Parameter(description = "Namespace, region, or zone job is running in", required = true) @PathVariable String location, + @Parameter(description = "Unique identifier of job being looked up", required = true) @PathVariable String id, + @Parameter(description = "File name to look up", required = true) @PathVariable String fileName ) { Collection> results = jobProviders.findResults { it.getFileContents(account, location, id, fileName) diff --git a/gradle.properties b/gradle.properties index 347110ce478..2d40cedd84b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.245.0 +korkVersion=7.247.0 fiatVersion=1.51.0 org.gradle.parallel=true spinnakerGradleVersion=8.32.1