You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2013/10/19 00:30:55 UTC
[1/2] git commit: Introduce listing blobs with detailed metadata
Updated Branches:
refs/heads/1.6.x 9e8d3b1c9 -> d344e52bf
Introduce listing blobs with detailed metadata
TODO: partial information returned already by list()?
Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/commit/3000d85d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/tree/3000d85d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/diff/3000d85d
Branch: refs/heads/1.6.x
Commit: 3000d85dfcd104fba24d7b058aa0c3cf5db4c849
Parents: 9e8d3b1
Author: Andrew Gaul <ga...@apache.org>
Authored: Thu Aug 1 11:22:35 2013 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Wed Sep 25 21:46:10 2013 -0700
----------------------------------------------------------------------
.../commands/blobstore/BlobListCommand.java | 34 ++++++++++++++++++--
.../commands/blobstore/BlobMetadataCommand.java | 21 +-----------
.../blobstore/BlobStoreCommandWithOptions.java | 25 ++++++++++++++
3 files changed, 57 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/blob/3000d85d/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
----------------------------------------------------------------------
diff --git a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
index f541b60..c5c16eb 100644
--- a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
+++ b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
@@ -21,14 +21,19 @@ import java.io.PrintStream;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.Callable;
import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.ListeningExecutorService;
import org.apache.felix.gogo.commands.Argument;
import org.apache.felix.gogo.commands.Command;
import org.apache.felix.gogo.commands.CommandException;
import org.apache.felix.gogo.commands.Option;
import org.jclouds.blobstore.BlobStore;
+import org.jclouds.blobstore.domain.BlobMetadata;
import org.jclouds.blobstore.domain.PageSet;
import org.jclouds.blobstore.domain.StorageMetadata;
import org.jclouds.blobstore.options.ListContainerOptions;
@@ -47,11 +52,14 @@ public class BlobListCommand extends BlobStoreCommandWithOptions {
@Argument(index = 1, name = "directoryPath", description = "List blobs only in this directory path", required = false)
String directoryPath;
+ @Option(name = "-d", aliases = "--details", description = "Display blob details", required = false, multiValued = false)
+ boolean details;
+
private static final PrintStream out = System.out;
@Override
protected Object doExecute() throws Exception {
- BlobStore blobStore = getBlobStore();
+ final BlobStore blobStore = getBlobStore();
ListContainerOptions options = ListContainerOptions.Builder.recursive();
if (directoryPath != null) {
@@ -69,8 +77,28 @@ public class BlobListCommand extends BlobStoreCommandWithOptions {
}
Collections.sort(blobNames);
- for (String blobName : blobNames) {
- out.println(blobName);
+ if (details) {
+ ListeningExecutorService executor = blobStore.getContext().utils().userExecutor();
+ Collection<ListenableFuture<BlobMetadata>> futures = Lists.newArrayList();
+ for (final String blobName : blobNames) {
+ futures.add(executor.submit(new Callable<BlobMetadata>() {
+ @Override
+ public BlobMetadata call() {
+ return blobStore.blobMetadata(containerName, blobName);
+ }
+ }));
+ }
+ Collection<BlobMetadata> metadatas = Futures.allAsList(futures).get();
+
+ for (BlobMetadata metadata : metadatas) {
+ out.println(metadata.getName() + ":");
+ BlobStoreCommandWithOptions.printMetadata(out, metadata.getContentMetadata());
+ out.println();
+ }
+ } else {
+ for (String blobName : blobNames) {
+ out.println(blobName);
+ }
}
String marker = blobStoreMetadatas.getNextMarker();
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/blob/3000d85d/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobMetadataCommand.java
----------------------------------------------------------------------
diff --git a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobMetadataCommand.java b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobMetadataCommand.java
index 0549e6b..915b531 100644
--- a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobMetadataCommand.java
+++ b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobMetadataCommand.java
@@ -22,7 +22,6 @@ import java.util.Date;
import java.util.List;
import com.google.common.collect.Lists;
-import com.google.common.io.BaseEncoding;
import org.apache.felix.gogo.commands.Argument;
import org.apache.felix.gogo.commands.Command;
@@ -57,29 +56,11 @@ public class BlobMetadataCommand extends BlobStoreCommandWithOptions {
throw new KeyNotFoundException(containerName, blobName, "while getting metadata");
}
- ContentMetadata contentMetdata = blobMetadata.getContentMetadata();
out.println(blobName + ":");
-
- printMetadata("Content-Disposition", contentMetdata.getContentDisposition());
- printMetadata("Content-Encoding", contentMetdata.getContentEncoding());
- printMetadata("Content-Language", contentMetdata.getContentLanguage());
- byte[] contentMD5 = contentMetdata.getContentMD5();
- if (contentMD5 != null) {
- printMetadata("Content-MD5",
- BaseEncoding.base16().lowerCase().encode(contentMD5));
- }
- printMetadata("Content-Type", contentMetdata.getContentType());
- printMetadata("Expires", contentMetdata.getExpires());
- printMetadata("Length", contentMetdata.getContentLength());
+ BlobStoreCommandWithOptions.printMetadata(out, blobMetadata.getContentMetadata());
out.println("");
}
return null;
}
-
- private static void printMetadata(String key, Object value) {
- if (value != null) {
- out.println(String.format(" %s: %s", key, value));
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/blob/3000d85d/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobStoreCommandWithOptions.java
----------------------------------------------------------------------
diff --git a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobStoreCommandWithOptions.java b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobStoreCommandWithOptions.java
index 28d104e..3bd5026 100644
--- a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobStoreCommandWithOptions.java
+++ b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobStoreCommandWithOptions.java
@@ -19,6 +19,7 @@ package org.jclouds.karaf.commands.blobstore;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
+import com.google.common.io.BaseEncoding;
import com.google.inject.Module;
import org.apache.felix.gogo.commands.Option;
import org.apache.felix.service.command.CommandSession;
@@ -26,12 +27,14 @@ import org.jclouds.Constants;
import org.jclouds.ContextBuilder;
import org.jclouds.blobstore.BlobStore;
import org.jclouds.blobstore.BlobStoreContext;
+import org.jclouds.io.ContentMetadata;
import org.jclouds.karaf.utils.EnvHelper;
import org.jclouds.karaf.utils.ServiceHelper;
import org.jclouds.logging.log4j.config.Log4JLoggingModule;
import java.io.IOException;
import java.io.File;
+import java.io.PrintStream;
import java.util.Collections;
import java.util.List;
@@ -150,4 +153,26 @@ public abstract class BlobStoreCommandWithOptions extends BlobStoreCommandBase {
}
return blobStore;
}
+
+
+ static void printMetadata(PrintStream out, ContentMetadata metadata) {
+ printMetadata(out, "Content-Disposition", metadata.getContentDisposition());
+ printMetadata(out, "Content-Encoding", metadata.getContentEncoding());
+ printMetadata(out, "Content-Language", metadata.getContentLanguage());
+ byte[] contentMD5 = metadata.getContentMD5();
+ if (contentMD5 != null) {
+ printMetadata(out, "Content-MD5",
+ BaseEncoding.base16().lowerCase().encode(contentMD5));
+ }
+ printMetadata(out, "Content-Type", metadata.getContentType());
+ printMetadata(out, "Expires", metadata.getExpires());
+ printMetadata(out, "Length", metadata.getContentLength());
+ }
+
+ static void printMetadata(PrintStream out, String key, Object value) {
+ if (value != null) {
+ out.println(String.format(" %s: %s", key, value));
+ }
+ }
+
}
[2/2] git commit: JCLOUDS-301: work around OOM with blobstore list
Posted by ga...@apache.org.
JCLOUDS-301: work around OOM with blobstore list
Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/commit/d344e52b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/tree/d344e52b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/diff/d344e52b
Branch: refs/heads/1.6.x
Commit: d344e52bf447b7b367c1f596c60be74e600163bd
Parents: 3000d85
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Sep 30 13:29:36 2013 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Fri Oct 18 15:30:40 2013 -0700
----------------------------------------------------------------------
.../java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/blob/d344e52b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
----------------------------------------------------------------------
diff --git a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
index c5c16eb..4b24fb5 100644
--- a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
+++ b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java
@@ -72,7 +72,7 @@ public class BlobListCommand extends BlobStoreCommandWithOptions {
for (StorageMetadata blobMetadata : blobStoreMetadatas) {
String blobName = blobMetadata.getName();
- cacheProvider.getProviderCacheForType("blob").put(blobMetadata.getProviderId(), blobName);
+ // do not add to cacheProvider since long lists will cause OutOfMemoryError
blobNames.add(blobName);
}