From 64cb42586b5ce692da3a2aef957487711e397789 Mon Sep 17 00:00:00 2001 From: Markus Winter Date: Fri, 30 Nov 2018 17:49:10 +0100 Subject: [PATCH 1/7] add getBlobStore method For openstack the right BlobStore depends on the region. So it should be the task of the provider to get the right BlobStore. BlobStoreProvider is currently working with BlobStoreContext. But at all places the context is just used to call the getBlobStore() method. --- .../BlobStoreProvider.java | 5 +++++ .../JCloudsArtifactManager.java | 16 ++++++++-------- .../artifact_manager_jclouds/s3/S3BlobStore.java | 6 ++++++ .../artifact_manager_jclouds/MockBlobStore.java | 5 +++++ .../s3/JCloudsArtifactManagerTest.java | 5 +++++ .../s3/S3AbstractTest.java | 2 +- 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java index ba154d56..9c07759b 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java @@ -29,6 +29,7 @@ import java.net.URI; import java.net.URL; +import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.domain.Blob; import org.kohsuke.accmod.Restricted; @@ -69,6 +70,10 @@ public enum HttpMethod { @NonNull public abstract BlobStoreContext getContext() throws IOException; + /** Return the jclouds Blobstore for working with blob. */ + @NonNull + public abstract BlobStore getBlobStore() throws IOException; + /** * Get a provider-specific URI. * diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java index 531565d0..d6900ffd 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java @@ -116,7 +116,7 @@ public void archive(FilePath workspace, Launcher launcher, BuildListener listene throws IOException, InterruptedException { LOGGER.log(Level.FINE, "Archiving from {0}: {1}", new Object[] { workspace, artifacts }); Map artifactUrls = new HashMap<>(); - BlobStore blobStore = getContext().getBlobStore(); + BlobStore blobStore = getBlobStore(); // Map artifacts to urls for upload for (Map.Entry entry : artifacts.entrySet()) { @@ -160,7 +160,7 @@ public boolean delete() throws IOException, InterruptedException { LOGGER.log(Level.FINE, "Ignoring blob deletion: {0}", blobPath); return false; } - return JCloudsVirtualFile.delete(provider, getContext().getBlobStore(), blobPath); + return JCloudsVirtualFile.delete(provider, getBlobStore(), blobPath); } @Override @@ -170,7 +170,7 @@ public VirtualFile root() { @Override public void stash(String name, FilePath workspace, Launcher launcher, EnvVars env, TaskListener listener, String includes, String excludes, boolean useDefaultExcludes, boolean allowEmpty) throws IOException, InterruptedException { - BlobStore blobStore = getContext().getBlobStore(); + BlobStore blobStore = getBlobStore(); // Map stash to url for upload String path = getBlobPath("stashes/" + name + ".tgz"); @@ -233,7 +233,7 @@ public Void invoke(File f, VirtualChannel channel) throws IOException, Interrupt @Override public void unstash(String name, FilePath workspace, Launcher launcher, EnvVars env, TaskListener listener) throws IOException, InterruptedException { - BlobStore blobStore = getContext().getBlobStore(); + BlobStore blobStore = getBlobStore(); // Map stash to url for download String blobPath = getBlobPath("stashes/" + name + ".tgz"); @@ -279,7 +279,7 @@ public void clearAllStashes(TaskListener listener) throws IOException, Interrupt return; } - BlobStore blobStore = getContext().getBlobStore(); + BlobStore blobStore = getBlobStore(); int count = 0; try { for (StorageMetadata sm : BlobStores.listAll(blobStore, provider.getContainer(), ListContainerOptions.Builder.prefix(stashPrefix).recursive())) { @@ -303,7 +303,7 @@ public void copyAllArtifactsAndStashes(Run to, TaskListener listener) thro } JCloudsArtifactManager dest = (JCloudsArtifactManager) am; String allPrefix = getBlobPath(""); - BlobStore blobStore = getContext().getBlobStore(); + BlobStore blobStore = getBlobStore(); int count = 0; try { for (StorageMetadata sm : BlobStores.listAll(blobStore, provider.getContainer(), ListContainerOptions.Builder.prefix(allPrefix).recursive())) { @@ -320,8 +320,8 @@ public void copyAllArtifactsAndStashes(Run to, TaskListener listener) thro listener.getLogger().printf("Copied %d artifact(s)/stash(es) from %s to %s%n", count, provider.toURI(provider.getContainer(), allPrefix), provider.toURI(provider.getContainer(), dest.getBlobPath(""))); } - private BlobStoreContext getContext() throws IOException { - return provider.getContext(); + private BlobStore getBlobStore() throws IOException { + return provider.getBlobStore(); } } diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java index f322afd7..d9e49633 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java @@ -43,6 +43,7 @@ import org.jclouds.ContextBuilder; import org.jclouds.aws.domain.SessionCredentials; import org.jclouds.aws.s3.AWSS3ProviderMetadata; +import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.domain.Blob; import org.jclouds.domain.Credentials; @@ -125,6 +126,11 @@ public BlobStoreContext getContext() throws IOException { throw new IOException(x); } } + + @Override + public BlobStore getBlobStore() throws IOException { + return getContext().getBlobStore(); + } /** * field only for tests. diff --git a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java index 6a67f9bc..3cd07b2e 100644 --- a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java +++ b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java @@ -145,6 +145,11 @@ public synchronized BlobStoreContext getContext() throws IOException { } return context; } + + @Override + public BlobStore getBlobStore() throws IOException { + return getContext().getBlobStore(); + } @Override public URI toURI(String container, String key) { diff --git a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/JCloudsArtifactManagerTest.java b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/JCloudsArtifactManagerTest.java index 5932a911..4a1e9cd8 100644 --- a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/JCloudsArtifactManagerTest.java +++ b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/JCloudsArtifactManagerTest.java @@ -79,6 +79,7 @@ import org.jenkinsci.plugins.workflow.job.WorkflowJob; import org.jenkinsci.plugins.workflow.job.WorkflowRun; import org.jvnet.hudson.test.Issue; +import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.domain.Blob; import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject; @@ -142,6 +143,10 @@ public BlobStoreContext getContext() throws IOException { return delegate.getContext(); } @Override + public BlobStore getBlobStore() throws IOException { + return delegate.getBlobStore(); + } + @Override public URI toURI(String container, String key) { return delegate.toURI(container, key); } diff --git a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3AbstractTest.java b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3AbstractTest.java index b7cb48a2..bb02de66 100644 --- a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3AbstractTest.java +++ b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3AbstractTest.java @@ -119,7 +119,7 @@ public void setupContext() throws Exception { context = provider.getContext(); - blobStore = context.getBlobStore(); + blobStore = provider.getBlobStore(); setup(); } From 2614cfdf090ba9ae383921097af858a0c00dfd36 Mon Sep 17 00:00:00 2001 From: Markus Winter Date: Sat, 1 Dec 2018 14:54:27 +0100 Subject: [PATCH 2/7] add default implementation for getBlobStore() --- .../plugins/artifact_manager_jclouds/BlobStoreProvider.java | 4 +++- .../plugins/artifact_manager_jclouds/s3/S3BlobStore.java | 5 ----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java index 9c07759b..38093a3a 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/BlobStoreProvider.java @@ -72,7 +72,9 @@ public enum HttpMethod { /** Return the jclouds Blobstore for working with blob. */ @NonNull - public abstract BlobStore getBlobStore() throws IOException; + public BlobStore getBlobStore() throws IOException { + return getContext().getBlobStore(); + } /** * Get a provider-specific URI. diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java index d9e49633..87fe4df6 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java @@ -127,11 +127,6 @@ public BlobStoreContext getContext() throws IOException { } } - @Override - public BlobStore getBlobStore() throws IOException { - return getContext().getBlobStore(); - } - /** * field only for tests. */ From 444c42f1d78edbebcb7baf86414654215ff45b2c Mon Sep 17 00:00:00 2001 From: Markus Winter Date: Sat, 1 Dec 2018 19:29:45 +0100 Subject: [PATCH 3/7] more places where to replace getContext() with getBlobStore() --- .../JCloudsVirtualFile.java | 22 +++++++++---------- .../artifact_manager_jclouds/NetworkTest.java | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java index 00dce6e2..946ed2dc 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java @@ -80,7 +80,7 @@ public class JCloudsVirtualFile extends VirtualFile { @CheckForNull private transient Blob blob; @CheckForNull - private transient BlobStoreContext context; + private transient BlobStore blobStore; public JCloudsVirtualFile(@NonNull BlobStoreProvider provider, @NonNull String container, @NonNull String key) { this.provider = provider; @@ -93,18 +93,18 @@ public JCloudsVirtualFile(@NonNull BlobStoreProvider provider, @NonNull String c private JCloudsVirtualFile(@NonNull JCloudsVirtualFile related, @NonNull String key) { this(related.provider, related.container, key); - context = related.context; + blobStore = related.blobStore; } /** - * Build jclouds blob context that is the base for all operations + * Build jclouds blobstore that is the base for all operations */ @Restricted(NoExternalUse.class) // testing only - BlobStoreContext getContext() throws IOException { - if (context == null) { - context = provider.getContext(); + BlobStore getBlobStore() throws IOException { + if (blobStore == null) { + blobStore = provider.getBlobStore(); } - return context; + return blobStore; } private String getContainer() { @@ -129,9 +129,9 @@ public String getName() { private Blob getBlob() throws IOException { if (blob == null) { LOGGER.log(Level.FINE, "checking for existence of blob {0} / {1}", new Object[] {container, key}); - blob = getContext().getBlobStore().getBlob(getContainer(), getKey()); + blob = getBlobStore().getBlob(getContainer(), getKey()); if (blob == null) { - blob = getContext().getBlobStore().blobBuilder(getKey()).build(); + blob = getBlobStore().blobBuilder(getKey()).build(); blob.getMetadata().setContainer(getContainer()); } } @@ -164,7 +164,7 @@ public boolean isDirectory() throws IOException { return frame.children.keySet().stream().anyMatch(f -> f.startsWith(relSlash)); } LOGGER.log(Level.FINE, "checking directory status {0} / {1}", new Object[] {container, key}); - return !getContext().getBlobStore().list(getContainer(), prefix(key + "/")).isEmpty(); + return !getBlobStore().list(getContainer(), prefix(key + "/")).isEmpty(); } @Override @@ -196,7 +196,7 @@ private Iterable listStorageMetadata(boolean recursive) throws if (recursive) { options.recursive(); } - return BlobStores.listAll(getContext().getBlobStore(), getContainer(), options); + return BlobStores.listAll(getBlobStore(), getContainer(), options); } @Override diff --git a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/NetworkTest.java b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/NetworkTest.java index ca90f7da..12190d9d 100644 --- a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/NetworkTest.java +++ b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/NetworkTest.java @@ -85,7 +85,7 @@ public class NetworkTest { @Before public void configureManager() throws Exception { MockBlobStore mockBlobStore = new MockBlobStore(); - mockBlobStore.getContext().getBlobStore().createContainerInLocation(null, mockBlobStore.getContainer()); + mockBlobStore.getBlobStore().createContainerInLocation(null, mockBlobStore.getContainer()); ArtifactManagerConfiguration.get().getArtifactManagerFactories().add(new JCloudsArtifactManagerFactory(mockBlobStore)); } From 32e83abcc95758a9dc53e1c4a79a241bceb7247c Mon Sep 17 00:00:00 2001 From: Markus Winter Date: Sat, 1 Dec 2018 19:32:10 +0100 Subject: [PATCH 4/7] remove unneeded override --- .../plugins/artifact_manager_jclouds/MockBlobStore.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java index 3cd07b2e..a806ce8b 100644 --- a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java +++ b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java @@ -146,11 +146,6 @@ public synchronized BlobStoreContext getContext() throws IOException { return context; } - @Override - public BlobStore getBlobStore() throws IOException { - return getContext().getBlobStore(); - } - @Override public URI toURI(String container, String key) { return URI.create("mock://" + container + "/" + key); From d27837bd465cb69c1b50dea0d35c82d2c437c441 Mon Sep 17 00:00:00 2001 From: d032386 Date: Tue, 4 Dec 2018 14:30:45 +0100 Subject: [PATCH 5/7] cleanup imports --- .../plugins/artifact_manager_jclouds/JCloudsArtifactManager.java | 1 - .../plugins/artifact_manager_jclouds/JCloudsVirtualFile.java | 1 - 2 files changed, 2 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java index d6900ffd..b3f8a2b3 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsArtifactManager.java @@ -58,7 +58,6 @@ import jenkins.util.VirtualFile; import org.apache.http.client.methods.HttpGet; import org.jclouds.blobstore.BlobStore; -import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.BlobStores; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.StorageMetadata; diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java index 946ed2dc..2fbadd0e 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/JCloudsVirtualFile.java @@ -44,7 +44,6 @@ import java.util.stream.StreamSupport; import org.jclouds.blobstore.BlobStore; -import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.BlobStores; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.MutableBlobMetadata; From 4b931ebd32d582197cdb954ce102fdfdcd98c71d Mon Sep 17 00:00:00 2001 From: d032386 Date: Thu, 28 Mar 2019 14:18:18 +0100 Subject: [PATCH 6/7] revert changes to files where only whitespace has changed --- .../plugins/artifact_manager_jclouds/s3/S3BlobStore.java | 2 +- .../jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java index 87fe4df6..054824df 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java @@ -126,7 +126,7 @@ public BlobStoreContext getContext() throws IOException { throw new IOException(x); } } - + /** * field only for tests. */ diff --git a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java index a806ce8b..6a67f9bc 100644 --- a/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java +++ b/src/test/java/io/jenkins/plugins/artifact_manager_jclouds/MockBlobStore.java @@ -145,7 +145,7 @@ public synchronized BlobStoreContext getContext() throws IOException { } return context; } - + @Override public URI toURI(String container, String key) { return URI.create("mock://" + container + "/" + key); From da40ea19c04a07087daf684ed48ade4670f443dc Mon Sep 17 00:00:00 2001 From: d032386 Date: Thu, 28 Mar 2019 14:57:54 +0100 Subject: [PATCH 7/7] remove unused import --- .../jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java index 054824df..f322afd7 100644 --- a/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java +++ b/src/main/java/io/jenkins/plugins/artifact_manager_jclouds/s3/S3BlobStore.java @@ -43,7 +43,6 @@ import org.jclouds.ContextBuilder; import org.jclouds.aws.domain.SessionCredentials; import org.jclouds.aws.s3.AWSS3ProviderMetadata; -import org.jclouds.blobstore.BlobStore; import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.blobstore.domain.Blob; import org.jclouds.domain.Credentials;