From aa0c104f6800dfb86171014878338cecdf31f6f1 Mon Sep 17 00:00:00 2001 From: Emily Burns Date: Wed, 26 Jun 2019 13:51:35 -0700 Subject: [PATCH] feat(artifacts): add optional release status param to fetching artifacts (#837) --- .../spinnaker/gate/controllers/ArtifactController.java | 9 ++++++--- .../netflix/spinnaker/gate/services/ArtifactService.java | 5 +++-- .../spinnaker/gate/services/internal/IgorService.groovy | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ArtifactController.java b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ArtifactController.java index 8664788291..4cd13e5436 100644 --- a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ArtifactController.java +++ b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/controllers/ArtifactController.java @@ -73,10 +73,13 @@ List artifactVersions( } @ApiOperation( - value = "Retrieve the available artifact versions for an artifact provider and package name") + value = "Retrieve the available artifact versions for an artifact provider and package name", + notes = "releaseStatus is an optional comma separated list of statuses to filter on.") @RequestMapping(value = "/{provider}/{packageName}", method = RequestMethod.GET) List getVersionsOfArtifactForProvider( - @PathVariable String provider, @PathVariable String packageName) { - return artifactService.getVersionsOfArtifactForProvider(provider, packageName); + @PathVariable String provider, + @PathVariable String packageName, + @RequestParam(required = false) String releaseStatus) { + return artifactService.getVersionsOfArtifactForProvider(provider, packageName, releaseStatus); } } diff --git a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/ArtifactService.java b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/ArtifactService.java index 2eaad9a5e4..09c3e5efd0 100644 --- a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/ArtifactService.java +++ b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/ArtifactService.java @@ -98,7 +98,8 @@ public Void getArtifactContents( .execute(); } - public List getVersionsOfArtifactForProvider(String provider, String packageName) { + public List getVersionsOfArtifactForProvider( + String provider, String packageName, String releaseStatus) { if (!igorService.isPresent()) { throw new IllegalStateException( "Cannot fetch artifact versions because Igor is not enabled."); @@ -106,7 +107,7 @@ public List getVersionsOfArtifactForProvider(String provider, String pac return stringListCommand( "artifactVersionsByProvider", - () -> igorService.get().getArtifactVersions(provider, packageName)) + () -> igorService.get().getArtifactVersions(provider, packageName, releaseStatus)) .execute(); } } diff --git a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/internal/IgorService.groovy b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/internal/IgorService.groovy index de5c6cba86..0436d246d8 100644 --- a/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/internal/IgorService.groovy +++ b/gate-web/src/main/groovy/com/netflix/spinnaker/gate/services/internal/IgorService.groovy @@ -69,7 +69,8 @@ interface IgorService { @GET('/artifacts/{provider}/{packageName}') List getArtifactVersions(@Path("provider") String provider, - @Path("packageName") String packageName); + @Path("packageName") String packageName, + @Query("releaseStatus") String releaseStatus); @GET('/concourse/{buildMaster}/teams/{team}/pipelines/{pipeline}/resources') List getConcourseResources(@Path("buildMaster") String buildMaster, @Path("team") String team, @Path("pipeline") String pipeline);