Repository: jclouds-labs-aws Updated Branches: refs/heads/master 5c63245f9 -> 377c58fba
JCLOUDS-457: Add Clear vault strategy Added a proper implementation to the Clear vault strategy Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/commit/377c58fb Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/tree/377c58fb Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/diff/377c58fb Branch: refs/heads/master Commit: 377c58fbaa5758b1bd4e17f9096b0cbe21e0b5f0 Parents: 5c63245 Author: Roman Coedo <[email protected]> Authored: Sat Jul 26 12:12:29 2014 +0200 Committer: Andrew Gaul <[email protected]> Committed: Sun Jul 27 16:42:51 2014 -0700 ---------------------------------------------------------------------- .../blobstore/strategy/ClearVaultStrategy.java | 30 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/377c58fb/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/ClearVaultStrategy.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/ClearVaultStrategy.java b/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/ClearVaultStrategy.java index f378ec2..276ed01 100644 --- a/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/ClearVaultStrategy.java +++ b/glacier/src/main/java/org/jclouds/glacier/blobstore/strategy/ClearVaultStrategy.java @@ -16,15 +16,41 @@ */ package org.jclouds.glacier.blobstore.strategy; +import static com.google.common.base.Preconditions.checkNotNull; + import org.jclouds.blobstore.options.ListContainerOptions; import org.jclouds.blobstore.strategy.ClearListStrategy; +import org.jclouds.glacier.GlacierClient; +import org.jclouds.glacier.domain.ArchiveMetadata; +import org.jclouds.glacier.domain.ArchiveMetadataCollection; +import org.jclouds.glacier.domain.InventoryRetrievalJobRequest; +import com.google.inject.Inject; import com.google.inject.Singleton; @Singleton public class ClearVaultStrategy implements ClearListStrategy { + private final GlacierClient sync; + private final PollingStrategy pollingStrategy; + + @Inject + public ClearVaultStrategy(GlacierClient sync, PollingStrategy pollingStrategy) { + this.pollingStrategy = checkNotNull(pollingStrategy, "pollingStrategy"); + this.sync = checkNotNull(sync, "sync"); + } + @Override - public void execute(String s, ListContainerOptions listContainerOptions) { - return; + public void execute(String container, ListContainerOptions listContainerOptions) { + String jobId = sync.initiateJob(container, InventoryRetrievalJobRequest.builder().build()); + try { + if (pollingStrategy.waitForSuccess(container, jobId)) { + ArchiveMetadataCollection archives = sync.getInventoryRetrievalOutput(container, jobId); + for(ArchiveMetadata archive : archives) { + sync.deleteArchive(container, archive.getArchiveId()); + } + } + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } }
