diff --git a/gate-core/src/main/groovy/com/netflix/spinnaker/gate/model/manageddelivery/EnvironmentArtifactVeto.java b/gate-core/src/main/groovy/com/netflix/spinnaker/gate/model/manageddelivery/EnvironmentArtifactVeto.java index be43f4f9f6..18a727fb53 100644 --- a/gate-core/src/main/groovy/com/netflix/spinnaker/gate/model/manageddelivery/EnvironmentArtifactVeto.java +++ b/gate-core/src/main/groovy/com/netflix/spinnaker/gate/model/manageddelivery/EnvironmentArtifactVeto.java @@ -16,6 +16,9 @@ package com.netflix.spinnaker.gate.model.manageddelivery; +import lombok.Data; + +@Data public class EnvironmentArtifactVeto { String targetEnvironment; String reference; diff --git a/gate-core/src/main/groovy/com/netflix/spinnaker/gate/services/internal/KeelService.java b/gate-core/src/main/groovy/com/netflix/spinnaker/gate/services/internal/KeelService.java index 7c0d232b2a..be6f2fa86d 100644 --- a/gate-core/src/main/groovy/com/netflix/spinnaker/gate/services/internal/KeelService.java +++ b/gate-core/src/main/groovy/com/netflix/spinnaker/gate/services/internal/KeelService.java @@ -116,6 +116,12 @@ Resource exportResource( @Path("name") String name, @Query("serviceAccount") String serviceAccount); + @GET("/export/artifact/{cloudProvider}/{account}/{clusterName}") + Map exportArtifact( + @Path("cloudProvider") String cloudProvider, + @Path("account") String account, + @Path("clusterName") String clusterName); + @POST("/application/{application}/pin") Response pin(@Path("application") String application, @Body EnvironmentArtifactPin pin); diff --git a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ManagedController.java b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ManagedController.java index 0ef7d55b98..9d097b02c1 100644 --- a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ManagedController.java +++ b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ManagedController.java @@ -106,6 +106,18 @@ ResponseEntity exportResource( return new ResponseEntity<>(resource, yamlResponseHeaders, HttpStatus.OK); } + @ApiOperation( + value = "Generates an artifact definition based on the artifact used in a running cluster", + response = Map.class) + @GetMapping(path = "/resources/export/artifact/{cloudProvider}/{account}/{clusterName}") + ResponseEntity exportResource( + @PathVariable("cloudProvider") String cloudProvider, + @PathVariable("account") String account, + @PathVariable("clusterName") String clusterName) { + Map artifact = keelService.exportArtifact(cloudProvider, account, clusterName); + return new ResponseEntity<>(artifact, yamlResponseHeaders, HttpStatus.OK); + } + @ApiOperation(value = "Get a delivery config manifest", response = DeliveryConfig.class) @GetMapping(path = "/delivery-configs/{name}") DeliveryConfig getManifest(@PathVariable("name") String name) {