JCLOUDS-1335: Azure Blob object access tiers
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/fc147dc0 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/fc147dc0 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/fc147dc0 Branch: refs/heads/master Commit: fc147dc0c5f87536550c0c0f4c54cb5c1d16bc1c Parents: 5facb65 Author: Andrew Gaul <[email protected]> Authored: Wed Sep 20 20:45:00 2017 -0700 Committer: Andrew Gaul <[email protected]> Committed: Thu Sep 21 20:31:34 2017 -0700 ---------------------------------------------------------------------- .../org/jclouds/azureblob/AzureBlobClient.java | 10 +++++ .../jclouds/azureblob/domain/AccessTier.java | 40 ++++++++++++++++++++ .../azureblob/domain/BlobProperties.java | 3 ++ .../azureblob/domain/MutableBlobProperties.java | 2 + .../domain/internal/BlobPropertiesImpl.java | 18 ++++++++- .../internal/MutableBlobPropertiesImpl.java | 14 +++++++ .../ParseBlobPropertiesFromHeaders.java | 5 +++ .../ContainerNameEnumerationResultsHandler.java | 7 +++- .../azureblob/AzureBlobClientLiveTest.java | 34 ++++++++++++++++- .../jclouds/azureblob/AzureBlobClientTest.java | 18 +++++++++ ...tainerNameEnumerationResultsHandlerTest.java | 9 +++-- .../src/test/resources/test_list_blobs.xml | 3 ++ .../test/resources/test_list_blobs_options.xml | 1 + 13 files changed, 157 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java index a50cf8e..32da1de 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java @@ -27,6 +27,7 @@ import javax.inject.Named; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.HEAD; +import javax.ws.rs.HeaderParam; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -45,6 +46,7 @@ import org.jclouds.azureblob.binders.BindAzureBlocksToRequest; import org.jclouds.azureblob.binders.BindAzureContentMetadataToRequest; import org.jclouds.azureblob.binders.BindAzureCopyOptionsToRequest; import org.jclouds.azureblob.binders.BindPublicAccessToRequest; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.AzureBlob; import org.jclouds.azureblob.domain.BlobProperties; import org.jclouds.azureblob.domain.ContainerProperties; @@ -434,6 +436,14 @@ public interface AzureBlobClient extends Closeable { @PathParam("container") @ParamValidators(ContainerNameValidator.class) String container, @PathParam("name") String name, @BinderParam(BindMapToHeadersWithPrefix.class) Map<String, String> metadata); + @Named("SetAccessTier") + @PUT + @Path("{container}/{name}") + @QueryParams(keys = { "comp" }, values = { "tier" }) + void setBlobTier( + @PathParam("container") @ParamValidators(ContainerNameValidator.class) String container, + @PathParam("name") String name, @HeaderParam("x-ms-access-tier") AccessTier tier); + /** * The Delete Blob operation marks the specified blob for deletion. The blob is later deleted * during garbage collection. http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/AccessTier.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/AccessTier.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/AccessTier.java new file mode 100644 index 0000000..02f03ca --- /dev/null +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/AccessTier.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azureblob.domain; + +import static com.google.common.base.Preconditions.checkNotNull; + +import com.google.common.base.CaseFormat; + +public enum AccessTier { + HOT, + COOL, + ARCHIVE; + + public String value() { + return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name()); + } + + @Override + public String toString() { + return value(); + } + + public static AccessTier fromValue(String tier) { + return valueOf(CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(tier, "tier"))); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/BlobProperties.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/BlobProperties.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/BlobProperties.java index f267b44..f58987f 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/BlobProperties.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/BlobProperties.java @@ -31,6 +31,9 @@ public interface BlobProperties extends Comparable<BlobProperties> { */ BlobType getType(); + /** @return access tier or null if not set */ + AccessTier getTier(); + LeaseStatus getLeaseStatus(); URI getUrl(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableBlobProperties.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableBlobProperties.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableBlobProperties.java index ce72875..f881117 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableBlobProperties.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableBlobProperties.java @@ -40,6 +40,8 @@ public interface MutableBlobProperties extends BlobProperties { * @see ListableContainerProperties#getContainer */ void setContainer(String container); + + void setTier(AccessTier tier); /** * @see ListableContainerProperties#getLastModified http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/BlobPropertiesImpl.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/BlobPropertiesImpl.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/BlobPropertiesImpl.java index c3c4005..6e8c635 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/BlobPropertiesImpl.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/BlobPropertiesImpl.java @@ -23,6 +23,7 @@ import java.util.Date; import java.util.Map; import org.jclouds.azureblob.domain.BlobProperties; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.BlobType; import org.jclouds.azureblob.domain.LeaseStatus; import org.jclouds.io.ContentMetadata; @@ -37,6 +38,7 @@ import com.google.common.collect.Maps; public class BlobPropertiesImpl implements BlobProperties { private final BlobType type; + private final AccessTier tier; private final String name; private final String container; private final URI url; @@ -46,12 +48,21 @@ public class BlobPropertiesImpl implements BlobProperties { private final LeaseStatus leaseStatus; private final BaseImmutableContentMetadata contentMetadata; - // TODO: should this take Cache-Control as well? + @Deprecated public BlobPropertiesImpl(BlobType type, String name, String container, URI url, @Nullable Date lastModified, @Nullable String eTag, long size, String contentType, @Nullable byte[] contentMD5, @Nullable String contentMetadata, @Nullable String contentLanguage, @Nullable Date currentExpires, LeaseStatus leaseStatus, Map<String, String> metadata) { + this(type, null, name, container, url, lastModified, eTag, size, contentType, contentMD5, contentMetadata, contentLanguage, currentExpires, leaseStatus, metadata); + } + + // TODO: should this take Cache-Control as well? + public BlobPropertiesImpl(BlobType type, @Nullable AccessTier tier, String name, String container, URI url, @Nullable Date lastModified, @Nullable String eTag, + long size, String contentType, @Nullable byte[] contentMD5, @Nullable String contentMetadata, + @Nullable String contentLanguage, @Nullable Date currentExpires, LeaseStatus leaseStatus, + Map<String, String> metadata) { this.type = checkNotNull(type, "type"); + this.tier = tier; this.leaseStatus = checkNotNull(leaseStatus, "leaseStatus"); this.name = checkNotNull(name, "name"); this.container = checkNotNull(container, "container"); @@ -71,6 +82,11 @@ public class BlobPropertiesImpl implements BlobProperties { return type; } + @Override + public AccessTier getTier() { + return tier; + } + /** *{@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableBlobPropertiesImpl.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableBlobPropertiesImpl.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableBlobPropertiesImpl.java index 67fd62a..517fe8a 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableBlobPropertiesImpl.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableBlobPropertiesImpl.java @@ -16,10 +16,13 @@ */ package org.jclouds.azureblob.domain.internal; +import static com.google.common.base.Preconditions.checkNotNull; + import java.net.URI; import java.util.Date; import java.util.Map; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.BlobProperties; import org.jclouds.azureblob.domain.BlobType; import org.jclouds.azureblob.domain.LeaseStatus; @@ -36,6 +39,7 @@ import com.google.common.collect.Maps; public class MutableBlobPropertiesImpl implements MutableBlobProperties { private BlobType type = BlobType.BLOCK_BLOB; + private AccessTier tier; private LeaseStatus leaseStatus = LeaseStatus.UNLOCKED; private String name; @@ -77,6 +81,16 @@ public class MutableBlobPropertiesImpl implements MutableBlobProperties { this.type = type; } + @Override + public AccessTier getTier() { + return tier; + } + + @Override + public void setTier(AccessTier tier) { + this.tier = checkNotNull(tier); + } + /** *{@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseBlobPropertiesFromHeaders.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseBlobPropertiesFromHeaders.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseBlobPropertiesFromHeaders.java index f480426..c744634 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseBlobPropertiesFromHeaders.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseBlobPropertiesFromHeaders.java @@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkArgument; import javax.inject.Inject; import org.jclouds.azureblob.blobstore.functions.BlobMetadataToBlobProperties; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.MutableBlobProperties; import org.jclouds.blobstore.domain.BlobMetadata; import org.jclouds.blobstore.functions.ParseSystemAndUserMetadataFromHeaders; @@ -55,6 +56,10 @@ public class ParseBlobPropertiesFromHeaders implements Function<HttpResponse, Mu BlobMetadata base = blobMetadataParser.apply(from); MutableBlobProperties to = blobToBlobProperties.apply(base); to.setContainer(container); + String tier = from.getFirstHeaderOrNull("x-ms-access-tier"); + if (tier != null) { + to.setTier(AccessTier.fromValue(tier)); + } return to; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandler.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandler.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandler.java index 5d23a18..807bc8a 100644 --- a/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandler.java +++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandler.java @@ -26,6 +26,7 @@ import java.util.Set; import javax.inject.Inject; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.BlobProperties; import org.jclouds.azureblob.domain.BlobType; import org.jclouds.azureblob.domain.LeaseStatus; @@ -70,6 +71,7 @@ public class ContainerNameEnumerationResultsHandler extends ParseSax.HandlerWith private String currentContentEncoding; private String currentContentLanguage; private BlobType currentBlobType; + private AccessTier currentAccessTier; private Date currentExpires; private boolean inBlob; private boolean inBlobPrefix; @@ -129,16 +131,19 @@ public class ContainerNameEnumerationResultsHandler extends ParseSax.HandlerWith nextMarker = (nextMarker.equals("")) ? null : nextMarker; } else if (qName.equals("BlobType")) { currentBlobType = BlobType.fromValue(currentText.toString()); + } else if (qName.equals("AccessTier")) { + currentAccessTier = AccessTier.fromValue(currentText.toString()); } else if (qName.equals("LeaseStatus")) { currentLeaseStatus = LeaseStatus.fromValue(currentText.toString()); } else if (qName.equals("Blob")) { URI currentUrl = uriBuilder(containerUrl).appendPath(Strings2.urlEncode(currentName)).build(); - BlobProperties md = new BlobPropertiesImpl(currentBlobType, currentName, containerUrl.getPath().replace("/", + BlobProperties md = new BlobPropertiesImpl(currentBlobType, currentAccessTier, currentName, containerUrl.getPath().replace("/", ""), currentUrl, currentLastModified, currentETag, currentSize, currentContentType, currentContentMD5, currentContentEncoding, currentContentLanguage, currentExpires, currentLeaseStatus, currentMetadata); blobMetadata.add(md); currentBlobType = null; + currentAccessTier = null; currentName = null; currentLastModified = null; currentETag = null; http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java index 2489ea2..306ecb7 100644 --- a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java +++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java @@ -38,6 +38,7 @@ import java.util.Set; import org.jclouds.azure.storage.AzureStorageResponseException; import org.jclouds.azure.storage.domain.BoundedSet; import org.jclouds.azure.storage.options.ListOptions; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.AzureBlob; import org.jclouds.azureblob.domain.BlobProperties; import org.jclouds.azureblob.domain.ContainerProperties; @@ -560,7 +561,7 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest { assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read()); } - @Test + @Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) public void testSetBlobProperties() throws Exception { String blobName = "blob-name"; ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); @@ -591,4 +592,35 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest { assertThat(contentMetadata.getContentLanguage()).isEqualTo(contentLanguage); assertThat(contentMetadata.getContentType()).isEqualTo(contentType); } + + @Test(timeOut = 5 * 60 * 1000, dependsOnMethods = { "testCreateContainer" }) + public void testSetBlobTier() throws Exception { + String blobName = "tier-blob-name"; + ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024); + + // create blob + AzureBlob object = getApi().newBlob(); + object.getProperties().setName(blobName); + object.setPayload(byteSource.read()); + getApi().putBlob(privateContainer, object); + + // default + BlobProperties properties = getApi().getBlobProperties(privateContainer, blobName); + assertThat(properties.getTier()).isNull(); + + // hot + getApi().setBlobTier(privateContainer, blobName, AccessTier.HOT); + properties = getApi().getBlobProperties(privateContainer, blobName); + assertThat(properties.getTier()).isEqualTo(AccessTier.HOT); + + // cool + getApi().setBlobTier(privateContainer, blobName, AccessTier.COOL); + properties = getApi().getBlobProperties(privateContainer, blobName); + assertThat(properties.getTier()).isEqualTo(AccessTier.COOL); + + // archive + getApi().setBlobTier(privateContainer, blobName, AccessTier.ARCHIVE); + properties = getApi().getBlobProperties(privateContainer, blobName); + assertThat(properties.getTier()).isEqualTo(AccessTier.ARCHIVE); + } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java index 3a98ffb..17d4362 100644 --- a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java +++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java @@ -33,6 +33,7 @@ import org.jclouds.Fallbacks.VoidOnNotFoundOr404; import org.jclouds.azure.storage.filters.SharedKeyLiteAuthentication; import org.jclouds.azure.storage.options.ListOptions; import org.jclouds.azureblob.AzureBlobFallbacks.FalseIfContainerAlreadyExists; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.AzureBlob; import org.jclouds.azureblob.domain.ListBlobsInclude; import org.jclouds.azureblob.domain.PublicAccess; @@ -379,6 +380,23 @@ public class AzureBlobClientTest extends BaseRestAnnotationProcessingTest<AzureB assertFallbackClassEquals(method, null); } + public void testSetBlobTier() throws Exception { + AccessTier tier = AccessTier.COOL; + Invokable<?, ?> method = method(AzureBlobClient.class, "setBlobTier", String.class, String.class, AccessTier.class); + GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("container", "blob", tier)); + + assertRequestLineEquals(request, + "PUT https://identity.blob.core.windows.net/container/blob?comp=tier HTTP/1.1"); + assertNonPayloadHeadersEqual(request, + "x-ms-access-tier: " + tier + "\n" + + "x-ms-version: 2017-04-17\n"); + assertPayloadEquals(request, null, null, false); + + assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); + assertSaxResponseParserClassEquals(method, null); + assertFallbackClassEquals(method, null); + } + public void testCopyBlob() throws Exception { Invokable<?, ?> method = method(AzureBlobClient.class, "copyBlob", URI.class, String.class, String.class, CopyBlobOptions.class); GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of( http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandlerTest.java ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandlerTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandlerTest.java index 16f11c1..a292748 100644 --- a/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandlerTest.java +++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/ContainerNameEnumerationResultsHandlerTest.java @@ -22,6 +22,7 @@ import java.io.InputStream; import java.net.URI; import java.util.Set; +import org.jclouds.azureblob.domain.AccessTier; import org.jclouds.azureblob.domain.BlobProperties; import org.jclouds.azureblob.domain.BlobType; import org.jclouds.azureblob.domain.LeaseStatus; @@ -56,17 +57,17 @@ public class ContainerNameEnumerationResultsHandlerTest extends BaseHandlerTest public void testApplyInputStream() { InputStream is = getClass().getResourceAsStream("/test_list_blobs.xml"); Set<BlobProperties> contents = ImmutableSet.<BlobProperties> of( - new BlobPropertiesImpl(BlobType.BLOCK_BLOB, "blob1.txt", "mycontainer", URI + new BlobPropertiesImpl(BlobType.BLOCK_BLOB, AccessTier.HOT, "blob1.txt", "mycontainer", URI .create("http://myaccount.blob.core.windows.net/mycontainer/blob1.txt"), dateService .rfc822DateParse("Thu, 18 Sep 2008 18:41:57 GMT"), "0x8CAE7D55D050B8B", 8, "text/plain; charset=UTF-8", null, null, null, null, LeaseStatus.UNLOCKED, ImmutableMap .<String, String> of()), - new BlobPropertiesImpl(BlobType.BLOCK_BLOB, "blob2.txt", "mycontainer", URI + new BlobPropertiesImpl(BlobType.BLOCK_BLOB, AccessTier.COOL, "blob2.txt", "mycontainer", URI .create("http://myaccount.blob.core.windows.net/mycontainer/blob2.txt"), dateService .rfc822DateParse("Thu, 18 Sep 2008 18:41:57 GMT"), "0x8CAE7D55CF6C339", 14, "text/plain; charset=UTF-8", null, null, null, null, LeaseStatus.UNLOCKED, ImmutableMap .<String, String> of()), - new BlobPropertiesImpl(BlobType.PAGE_BLOB, "newblob1.txt", "mycontainer", URI + new BlobPropertiesImpl(BlobType.PAGE_BLOB, AccessTier.ARCHIVE, "newblob1.txt", "mycontainer", URI .create("http://myaccount.blob.core.windows.net/mycontainer/newblob1.txt"), dateService .rfc822DateParse("Thu, 18 Sep 2008 18:41:57 GMT"), "0x8CAE7D55CF6C339", 25, "text/plain; charset=UTF-8", null, null, null, null, LeaseStatus.UNLOCKED, ImmutableMap @@ -84,7 +85,7 @@ public class ContainerNameEnumerationResultsHandlerTest extends BaseHandlerTest public void testOptions() { InputStream is = getClass().getResourceAsStream("/test_list_blobs_options.xml"); - Set<BlobProperties> contents = ImmutableSet.<BlobProperties> of(new BlobPropertiesImpl(BlobType.BLOCK_BLOB, "a", + Set<BlobProperties> contents = ImmutableSet.<BlobProperties> of(new BlobPropertiesImpl(BlobType.BLOCK_BLOB, AccessTier.HOT, "a", "adriancole-blobstore3", URI.create("https://jclouds.blob.core.windows.net/adriancole-blobstore3/a"), dateService.rfc822DateParse("Sat, 30 Jan 2010 17:46:15 GMT"), "0x8CC6FEB41736428", 8, "application/octet-stream", null, null, null, null, LeaseStatus.UNLOCKED, ImmutableMap.<String, String> of())); http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/test/resources/test_list_blobs.xml ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/test/resources/test_list_blobs.xml b/providers/azureblob/src/test/resources/test_list_blobs.xml index ab040a3..f7a5229 100644 --- a/providers/azureblob/src/test/resources/test_list_blobs.xml +++ b/providers/azureblob/src/test/resources/test_list_blobs.xml @@ -13,6 +13,7 @@ <Content-Length>8</Content-Length> <Content-Type>text/plain; charset=UTF-8</Content-Type> <BlobType>BlockBlob</BlobType> + <AccessTier>Hot</AccessTier> <LeaseStatus>unlocked</LeaseStatus> <Content-Encoding /> <Content-Language /> @@ -26,6 +27,7 @@ <Content-Length>14</Content-Length> <Content-Type>text/plain; charset=UTF-8</Content-Type> <BlobType>BlockBlob</BlobType> + <AccessTier>Cool</AccessTier> <LeaseStatus>unlocked</LeaseStatus> <Content-Encoding /> <Content-Language /> @@ -42,6 +44,7 @@ <Content-Length>25</Content-Length> <Content-Type>text/plain; charset=UTF-8</Content-Type> <BlobType>PageBlob</BlobType> + <AccessTier>Archive</AccessTier> <LeaseStatus>unlocked</LeaseStatus> <Content-Encoding /> <Content-Language /> http://git-wip-us.apache.org/repos/asf/jclouds/blob/fc147dc0/providers/azureblob/src/test/resources/test_list_blobs_options.xml ---------------------------------------------------------------------- diff --git a/providers/azureblob/src/test/resources/test_list_blobs_options.xml b/providers/azureblob/src/test/resources/test_list_blobs_options.xml index 55a33f4..de52605 100644 --- a/providers/azureblob/src/test/resources/test_list_blobs_options.xml +++ b/providers/azureblob/src/test/resources/test_list_blobs_options.xml @@ -18,6 +18,7 @@ <Content-MD5 /> <Cache-Control /> <BlobType>BlockBlob</BlobType> + <AccessTier>Hot</AccessTier> <LeaseStatus>unlocked</LeaseStatus> </Properties> <Metadata />
