Skip to content

Commit

Permalink
feat(artifacts): expose types supported by a given artifact credential (
Browse files Browse the repository at this point in the history
Scott Bloch-Wehba-Seaward authored Aug 13, 2018
1 parent 44cd636 commit 3d44071
Showing 8 changed files with 28 additions and 26 deletions.
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Request.Builder;
import com.squareup.okhttp.Response;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
@@ -41,6 +43,7 @@
@Data
public class BitbucketArtifactCredentials implements ArtifactCredentials {
private final String name;
private final List<String> types = Arrays.asList("bitbucket/file");

@JsonIgnore
private final Builder requestBuilder;
@@ -104,11 +107,6 @@ public InputStream download(Artifact artifact) throws IOException {
}
}

@Override
public boolean handlesType(String type) {
return type.equals("bitbucket/file");
}

public class FailedDownloadException extends IOException {
public FailedDownloadException(String message) {
super(message);
Original file line number Diff line number Diff line change
@@ -21,9 +21,14 @@

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public interface ArtifactCredentials {
String getName();
boolean handlesType(String type);
List<String> getTypes();
InputStream download(Artifact artifact) throws IOException;

default boolean handlesType(String type) {
return getTypes().stream().anyMatch(it -> it.equals(type));
}
}
Original file line number Diff line number Diff line change
@@ -20,6 +20,8 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.netflix.spinnaker.clouddriver.artifacts.config.ArtifactCredentials;
import com.netflix.spinnaker.kork.artifacts.model.Artifact;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.NotImplementedException;
@@ -33,6 +35,8 @@
@Data
public class EmbeddedArtifactCredentials implements ArtifactCredentials {
private final String name;
private final List<String> types = Arrays.asList("embedded/base64");

@JsonIgnore
private final Base64.Decoder base64Decoder;

Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@
import com.google.api.services.storage.StorageScopes;
import com.netflix.spinnaker.clouddriver.artifacts.config.ArtifactCredentials;
import com.netflix.spinnaker.kork.artifacts.model.Artifact;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -43,6 +45,7 @@ public class GcsArtifactCredentials implements ArtifactCredentials {
@JsonIgnore
private final Storage storage;
private final String name;
private final List<String> types = Arrays.asList("gcs/object");

public GcsArtifactCredentials(String applicationName, GcsArtifactAccount account) throws IOException, GeneralSecurityException {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
@@ -96,9 +99,4 @@ public InputStream download(Artifact artifact) throws IOException {

return get.executeMediaAsInputStream();
}

@Override
public boolean handlesType(String type) {
return type.equals("gcs/object");
}
}
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Request.Builder;
import com.squareup.okhttp.Response;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
@@ -41,6 +43,7 @@
@Data
public class GitHubArtifactCredentials implements ArtifactCredentials {
private final String name;
private final List<String> types = Arrays.asList("github/file");

@JsonIgnore
private final Builder requestBuilder;
@@ -133,11 +136,6 @@ public InputStream download(Artifact artifact) throws IOException {
}
}

@Override
public boolean handlesType(String type) {
return type.equals("github/file");
}

@Data
public static class ContentMetadata {
@JsonProperty("download_url")
Original file line number Diff line number Diff line change
@@ -25,6 +25,8 @@
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Request.Builder;
import com.squareup.okhttp.Response;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
@@ -38,6 +40,7 @@
@Data
public class GitlabArtifactCredentials implements ArtifactCredentials {
private final String name;
private final List<String> types = Arrays.asList("gitlab/file");

@JsonIgnore
private final Builder requestBuilder;
@@ -110,11 +113,6 @@ public InputStream download(Artifact artifact) throws IOException {
}
}

@Override
public boolean handlesType(String type) {
return type.equals("gitlab/file");
}

public class FailedDownloadException extends IOException {

public FailedDownloadException(String message, Throwable cause) {
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Request.Builder;
import com.squareup.okhttp.Response;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
@@ -41,6 +43,7 @@
@Data
public class HttpArtifactCredentials implements ArtifactCredentials {
private final String name;
private final List<String> types = Arrays.asList("http/file");

@JsonIgnore
private final Builder requestBuilder;
Original file line number Diff line number Diff line change
@@ -20,6 +20,8 @@
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.S3Object;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.StringUtils;

import com.netflix.spinnaker.clouddriver.artifacts.config.ArtifactCredentials;
@@ -36,6 +38,7 @@ public class S3ArtifactCredentials implements ArtifactCredentials {
private final String apiEndpoint;
private final String apiRegion;
private final String region;
private final List<String> types = Arrays.asList("s3/object");

public S3ArtifactCredentials(S3ArtifactAccount account) throws IllegalArgumentException {
name = account.getName();
@@ -74,9 +77,4 @@ public InputStream download(Artifact artifact) throws IllegalArgumentException {
S3Object s3obj = getS3Client().getObject(bucketName, path);
return s3obj.getObjectContent();
}

@Override
public boolean handlesType(String type) {
return type.equals("s3/object");
}
}

0 comments on commit 3d44071

Please sign in to comment.