From 467d04917f46bb5deb3df3e6ba8083ebeae8c8a7 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Wed, 14 Feb 2018 15:28:30 -0700 Subject: [PATCH 01/18] Adding VersionId to Ds3Object and updating marshaling --- .../ds3client/models/bulk/Ds3Object.java | 81 ++++++++++++++++--- .../models/bulk/PartialDs3Object.java | 12 +++ .../ds3client/serializer/Views.java | 15 ++++ .../ds3client/serializer/XmlOutput.java | 19 ++--- .../ds3client/serializer/XmlOutput_Test.java | 24 +++++- 5 files changed, 128 insertions(+), 23 deletions(-) create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/Views.java diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java index ce860a7bf..5c1c9f7bc 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java @@ -15,16 +15,24 @@ package com.spectralogic.ds3client.models.bulk; -import com.fasterxml.jackson.annotation.JsonFilter; +import com.fasterxml.jackson.annotation.JsonView; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.spectralogic.ds3client.serializer.Views; + +import java.util.UUID; -@JsonFilter("sizeFilter") public class Ds3Object { @JacksonXmlProperty(isAttribute = true, localName = "Name") private String name; + + @JsonView(Views.PutObject.class) @JacksonXmlProperty(isAttribute = true, localName = "Size") private long size; + @JsonView(Views.GetObject.class) + @JacksonXmlProperty(isAttribute = true, localName = "VersionId") + private String versionId; + /** * This constructor is used for XML Serialization. * The preferred method is to use one of the other two constructors. @@ -33,6 +41,30 @@ public Ds3Object() { //This constructor is used just for serialization. } + /** + * Use this constructor when getting a version of a file from DS3. + * @param name The name of the object to get from DS3 + * @param size The size of the object to get from DS3 + * @param versionId The version ID of the object to get from DS3 + */ + public Ds3Object(final String name, final long size, final UUID versionId) { + this.name = name; + this.size = size; + this.versionId = versionId.toString(); + } + + /** + * Use this constructor when getting a version of a file from DS3. + * @param name The name of the object to get from DS3 + * @param size The size of the object to get from DS3 + * @param versionId The version ID of the object to get from DS3 + */ + public Ds3Object(final String name, final long size, final String versionId) { + this.name = name; + this.size = size; + this.versionId = versionId; + } + /** * Use this constructor when putting files to DS3. * @param name The name of the object that will be put to DS3 @@ -41,6 +73,29 @@ public Ds3Object() { public Ds3Object(final String name, final long size) { this.name = name; this.size = size; + this.versionId = null; + } + + /** + * Use this constructor when getting files from DS3. + * @param name the name of the object to get from DS3 + * @param versionId The version ID of the object to get from DS3 + */ + public Ds3Object(final String name, final UUID versionId) { + this.name = name; + this.size = 0; + this.versionId = versionId.toString(); + } + + /** + * Use this constructor when getting files from DS3. + * @param name the name of the object to get from DS3 + * @param versionId The version ID of the object to get from DS3 + */ + public Ds3Object(final String name, final String versionId) { + this.name = name; + this.size = 0; + this.versionId = versionId; } /** @@ -50,6 +105,7 @@ public Ds3Object(final String name, final long size) { public Ds3Object(final String name) { this.name = name; this.size = 0; + this.versionId = null; } public String getName() { @@ -80,13 +136,20 @@ public int hashCode() { @Override public boolean equals(final Object obj) { - if (obj instanceof Ds3Object) { - final Ds3Object ds3Obj = (Ds3Object) obj; - if (ds3Obj.getName().equals(this.getName()) && - ds3Obj.getSize() == this.getSize()) { - return true; - } + if (!(obj instanceof Ds3Object)) { + return false; } - return false; + final Ds3Object ds3Obj = (Ds3Object) obj; + return ds3Obj.getName().equals(this.getName()) && + ds3Obj.getSize() == this.getSize() && + ds3Obj.getVersionId().equals(this.getVersionId()); + } + + public String getVersionId() { + return versionId; + } + + public void setVersionId(String versionId) { + this.versionId = versionId; } } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/PartialDs3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/PartialDs3Object.java index 1ed151d08..ba6aa5666 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/PartialDs3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/PartialDs3Object.java @@ -18,6 +18,8 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped; import com.spectralogic.ds3client.models.common.Range; +import java.util.UUID; + public class PartialDs3Object extends Ds3Object { @JsonUnwrapped @@ -28,6 +30,16 @@ public PartialDs3Object(final String name, final Range range) { this.range = range; } + public PartialDs3Object(final String name, final Range range, final UUID versionId) { + super(name, versionId); + this.range = range; + } + + public PartialDs3Object(final String name, final Range range, final String versionId) { + super(name, versionId); + this.range = range; + } + public Range getRange() { return range; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/Views.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/Views.java new file mode 100644 index 000000000..97f91dcfb --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/Views.java @@ -0,0 +1,15 @@ +package com.spectralogic.ds3client.serializer; + +/** + * Used to annotate Ds3Object attributes to specify which attributes are + * unique to bulk get vs bulk put request payloads. Note that parameters + * with no annotation will be marshaled into both get and put payloads. + * These are used with the JsonView annotation. + */ +public class Views { + /** Denotes parameters within Ds3Object which are unique to get object request payloads */ + public static class GetObject { } + + /** Denotes parameters within Ds3Object which are unique to get object request payloads */ + public static class PutObject { } +} \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/XmlOutput.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/XmlOutput.java index ab2f78f90..8e49998b8 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/XmlOutput.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/serializer/XmlOutput.java @@ -17,21 +17,18 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ser.FilterProvider; -import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.spectralogic.ds3client.models.bulk.Ds3ObjectList; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.util.Properties; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public final class XmlOutput { private static final JacksonXmlModule module; @@ -88,13 +85,13 @@ public static String toXml(final Object object) { return toXml(object, null); } - private static String toXml(final Object object, final FilterProvider filterProvider) { + private static String toXml(final Object object, final Class view) { try { - if (filterProvider == null) { + if (view == null) { return mapper.writeValueAsString(object); } else { - return mapper.writer(filterProvider).writeValueAsString(object); + return mapper.writerWithView(view).writeValueAsString(object); } } catch(final JsonProcessingException e) { @@ -104,11 +101,9 @@ private static String toXml(final Object object, final FilterProvider filterProv public static String toXml(final Ds3ObjectList objects, final boolean isBulkPut) { if (isBulkPut) { - return XmlOutput.toXml(objects); + return XmlOutput.toXml(objects, Views.PutObject.class); } - final FilterProvider filters = new SimpleFilterProvider().addFilter("sizeFilter", - SimpleBeanPropertyFilter.serializeAllExcept("Size")); - return XmlOutput.toXml(objects, filters); + return XmlOutput.toXml(objects, Views.GetObject.class); } public static T fromXml(final String xmlString, final Class type) throws IOException { diff --git a/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java b/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java index 395570f7d..f6776882c 100644 --- a/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java +++ b/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java @@ -73,7 +73,7 @@ public void bucketListWithEmptyContents() throws IOException { } @Test - public void toXmlWithNoFilter() { + public void toXmlWithSize() { final String expectedString = ""; final List objectList = ImmutableList.of(new Ds3Object("file1", 12), new Ds3Object("file2", 5022)).asList(); final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); @@ -83,7 +83,7 @@ public void toXmlWithNoFilter() { } @Test - public void toXmlWithFilter() { + public void toXmlWithNoSize() { final String expectedString = ""; final List objectList = ImmutableList.of(new Ds3Object("file1", 12), new Ds3Object("file2", 5022)).asList(); final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); @@ -92,6 +92,26 @@ public void toXmlWithFilter() { assertThat(result, is(expectedString)); } + @Test + public void toXmlWithNoVersionId() { + final String expectedString = ""; + final List objectList = ImmutableList.of(new Ds3Object("file1", 12, "version1"), new Ds3Object("file2", 5022, "version2")).asList(); + final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); + final String result = XmlOutput.toXml(ds3ObjectList, true); + + assertThat(result, is(expectedString)); + } + + @Test + public void toXmlWithVersionId() { + final String expectedString = ""; + final List objectList = ImmutableList.of(new Ds3Object("file1", 12, "version1"), new Ds3Object("file2", 5022, "version2")).asList(); + final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); + final String result = XmlOutput.toXml(ds3ObjectList, false); + + assertThat(result, is(expectedString)); + } + @Test public void toXmlWithPriority() { final String expectedString = ""; From 8f5df5fa31bfc91cd7ba83dc0af749f45a6a467f Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Mon, 19 Feb 2018 12:43:03 -0700 Subject: [PATCH 02/18] 5.0 API plus updating existing tests --- .../integration/RandomDataChannelBuilder.java | 67 ++++++++++++++ .../ds3client/integration/Util.java | 45 ++++++++- .../integration/PutJobManagement_Test.java | 28 ++++++ .../integration/Regression_Test.java | 16 ++-- .../SpectraS3PaginationLoader_Test.java | 6 +- .../integration/VersionedObject_Test.java | 92 +++++++++++++++++++ .../test/helpers/TempStorageUtil.java | 20 ++++ .../com/spectralogic/ds3client/Ds3Client.java | 6 ++ .../spectralogic/ds3client/Ds3ClientImpl.java | 4 + .../commands/DeleteObjectRequest.java | 25 +++-- .../commands/DeleteObjectsRequest.java | 18 ---- .../ds3client/commands/GetBucketRequest.java | 18 ++++ .../ds3client/commands/GetObjectRequest.java | 21 +++++ ...GetBlobsOnTapeSpectraS3ResponseParser.java | 4 +- ...tageObjectsJobSpectraS3ResponseParser.java | 40 ++++++++ ...leteFolderRecursivelySpectraS3Request.java | 18 ---- ...ectStorageDomainBlobsSpectraS3Request.java | 28 ++---- .../EjectStorageDomainSpectraS3Request.java | 23 ++--- .../GetBlobsOnTapeSpectraS3Request.java | 71 +++++++++++++- .../GetBlobsOnTapeSpectraS3Response.java | 10 +- .../GetObjectsDetailsSpectraS3Request.java | 38 +++++--- ...bjectsWithFullDetailsSpectraS3Request.java | 38 +++++--- ...alPlacementForObjectsSpectraS3Request.java | 20 ++-- ...bjectsWithFullDetailsSpectraS3Request.java | 20 ++-- .../spectrads3/GetPoolsSpectraS3Request.java | 18 ++-- ...bjectsWithFullDetailsSpectraS3Request.java | 20 ++-- .../spectrads3/GetTapesSpectraS3Request.java | 18 ++-- .../ImportAllPoolsSpectraS3Request.java | 9 +- .../ImportAllTapesSpectraS3Request.java | 9 +- .../ImportAzureTargetSpectraS3Request.java | 15 --- .../ImportPoolSpectraS3Request.java | 9 +- .../ImportS3TargetSpectraS3Request.java | 15 --- .../ImportTapeSpectraS3Request.java | 9 +- ...ModifyDataPathBackendSpectraS3Request.java | 29 +++--- .../ModifyDataPolicySpectraS3Request.java | 14 +++ ...fyStorageDomainMemberSpectraS3Request.java | 30 ++++++ .../ModifyTapePartitionSpectraS3Request.java | 14 +++ .../ModifyUserSpectraS3Request.java | 14 +++ .../PutDataPolicySpectraS3Request.java | 14 +++ ...peStorageDomainMemberSpectraS3Request.java | 15 +++ .../StageObjectsJobSpectraS3Request.java | 83 +++++++++++++++++ .../StageObjectsJobSpectraS3Response.java | 28 ++++++ ...alPlacementForObjectsSpectraS3Request.java | 20 ++-- ...bjectsWithFullDetailsSpectraS3Request.java | 20 ++-- .../ds3client/models/ActiveJob.java | 12 +++ .../ds3client/models/Contents.java | 26 ++++++ .../ds3client/models/DataPathBackend.java | 24 ++--- .../ds3client/models/DataPolicy.java | 12 +++ .../models/DetailedTapePartition.java | 12 +++ ...ictResolutionMode.java => JobRestore.java} | 8 +- .../ds3client/models/ListBucketResult.java | 13 +++ .../models/NamedDetailedTapePartition.java | 12 +++ .../spectralogic/ds3client/models/Pool.java | 12 +-- .../ds3client/models/RestOperationType.java | 1 + .../ds3client/models/SpectraUser.java | 12 +++ .../ds3client/models/StorageDomainMember.java | 12 +++ .../ds3client/models/SuspectBlobPool.java | 12 +++ .../ds3client/models/SuspectBlobTape.java | 12 +++ .../spectralogic/ds3client/models/Tape.java | 12 +-- .../ds3client/models/TapePartition.java | 12 +++ .../models/TapePartitionFailureType.java | 3 +- .../ds3client/models/TapeState.java | 1 + .../ds3client/models/VersioningLevel.java | 3 +- .../ds3client/Ds3Client_Test.java | 4 +- 64 files changed, 981 insertions(+), 313 deletions(-) create mode 100644 ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/RandomDataChannelBuilder.java create mode 100644 ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java rename ds3-sdk/src/main/java/com/spectralogic/ds3client/models/{ImportConflictResolutionMode.java => JobRestore.java} (89%) diff --git a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/RandomDataChannelBuilder.java b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/RandomDataChannelBuilder.java new file mode 100644 index 000000000..fa4222cb9 --- /dev/null +++ b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/RandomDataChannelBuilder.java @@ -0,0 +1,67 @@ +/* + * ****************************************************************************** + * Copyright 2014-2018 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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 com.spectralogic.ds3client.integration; + +import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; +import com.spectralogic.ds3client.models.bulk.Ds3Object; +import com.spectralogic.ds3client.utils.ByteArraySeekableByteChannel; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.SeekableByteChannel; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Creates a channel builder that generates random data. All object keys and sizes need to be specified. + */ +public class RandomDataChannelBuilder implements Ds3ClientHelpers.ObjectChannelBuilder { + + private static final int seed = 12345; + private final Map objectMap = new HashMap(); + + public RandomDataChannelBuilder() { + } + + public RandomDataChannelBuilder(final List objects) { + for (final Ds3Object obj : objects) { + this.objectMap.put(obj.getName(), obj.getSize()); + } + } + + RandomDataChannelBuilder withObject(final String key, final Long size) { + this.objectMap.put(key, size); + return this; + } + + @Override + public SeekableByteChannel buildChannel(final String key) throws IOException { + if (!this.objectMap.containsKey(key)) { + throw new IllegalArgumentException(String.format("Object with name '%s' was not defined for this channel builder.", key)); + } + + final Long size = this.objectMap.get(key); + final byte[] randomData = IOUtils.toByteArray(new RandomDataInputStream(seed, size)); + final ByteBuffer randomBuffer = ByteBuffer.wrap(randomData); + + final ByteArraySeekableByteChannel channel = new ByteArraySeekableByteChannel(size.intValue()); + channel.write(randomBuffer); + + return channel; + } +} diff --git a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java index 245e5ad99..0ed251ec1 100644 --- a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java +++ b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java @@ -15,15 +15,18 @@ package com.spectralogic.ds3client.integration; +import com.google.common.collect.ImmutableList; import com.spectralogic.ds3client.Ds3Client; import com.spectralogic.ds3client.Ds3ClientBuilder; -import com.spectralogic.ds3client.commands.DeleteBucketRequest; -import com.spectralogic.ds3client.commands.DeleteObjectRequest; +import com.spectralogic.ds3client.commands.spectrads3.CancelJobSpectraS3Request; +import com.spectralogic.ds3client.commands.spectrads3.GetJobsSpectraS3Request; +import com.spectralogic.ds3client.commands.spectrads3.GetJobsSpectraS3Response; import com.spectralogic.ds3client.commands.spectrads3.GetSystemInformationSpectraS3Request; import com.spectralogic.ds3client.helpers.DeleteBucket; import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; import com.spectralogic.ds3client.helpers.channelbuilders.PrefixAdderObjectChannelBuilder; -import com.spectralogic.ds3client.models.Contents; +import com.spectralogic.ds3client.models.Job; +import com.spectralogic.ds3client.models.JobStatus; import com.spectralogic.ds3client.models.bulk.Ds3Object; import com.spectralogic.ds3client.utils.ResourceUtils; import org.slf4j.Logger; @@ -31,8 +34,11 @@ import java.io.IOException; import java.net.URISyntaxException; +import java.nio.channels.FileChannel; +import java.nio.channels.SeekableByteChannel; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.List; @@ -79,6 +85,24 @@ public static void loadBookTestData(final Ds3Client client, final String bucketN LOG.info("Finished loading test data..."); } + /** + * Loads a single test book to a BP with the specified object name. + */ + public static void loadTestBook(final Ds3Client client, final String fileName, final String objectName, final String bucketName) throws IOException, URISyntaxException { + final Path filePath = ResourceUtils.loadFileResource(RESOURCE_BASE_NAME + fileName); + final Ds3Object obj = new Ds3Object(objectName, Files.size(filePath)); + + final Ds3ClientHelpers helpers = Ds3ClientHelpers.wrap(client); + + final Ds3ClientHelpers.Job job = helpers.startWriteJob(bucketName, ImmutableList.of(obj)); + job.transfer(new Ds3ClientHelpers.ObjectChannelBuilder() { + @Override + public SeekableByteChannel buildChannel(final String key) throws IOException { + return FileChannel.open(filePath, StandardOpenOption.READ); + } + }); + } + public static Ds3ClientHelpers.Job getLoadJob(final Ds3Client client, final String bucketName, final String resourceBaseName) throws IOException, URISyntaxException { final Ds3ClientHelpers helpers = Ds3ClientHelpers.wrap(client); @@ -118,4 +142,19 @@ public static void deleteBucketContents(final Ds3Client client, final String buc final Ds3ClientHelpers helpers = Ds3ClientHelpers.wrap(client); DeleteBucket.INSTANCE.deleteBucketContents(helpers, bucketName); } + + // Cancels all in-progress jobs associated with a bucket + public static void cancelAllJobsForBucket(final Ds3Client client, final String bucketName) { + try { + final GetJobsSpectraS3Response getJobs = client.getJobsSpectraS3(new GetJobsSpectraS3Request().withBucketId(bucketName)); + + for (final Job job : getJobs.getJobListResult().getJobs()) { + if (job.getStatus() == JobStatus.IN_PROGRESS) { + client.cancelJobSpectraS3(new CancelJobSpectraS3Request(job.getJobId())); + } + } + } catch (final IOException e) { + LOG.debug("Could not cancel jobs for bucket '%s': %s", bucketName, e.getMessage()); + } + } } diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/PutJobManagement_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/PutJobManagement_Test.java index cfdad62ab..e2d283cc7 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/PutJobManagement_Test.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/PutJobManagement_Test.java @@ -75,6 +75,7 @@ import static com.spectralogic.ds3client.commands.spectrads3.PutBulkJobSpectraS3Request.MIN_UPLOAD_SIZE_IN_BYTES; import static com.spectralogic.ds3client.integration.Util.RESOURCE_BASE_NAME; +import static com.spectralogic.ds3client.integration.Util.cancelAllJobsForBucket; import static com.spectralogic.ds3client.integration.Util.deleteAllContents; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; @@ -192,6 +193,7 @@ public void getActiveJobs() throws IOException, URISyntaxException { } assertThat(activeJobsUUIDs, contains(jobID)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -210,6 +212,7 @@ public void getJobs() throws IOException { assertThat(jobUUIDs, contains(jobID)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -230,6 +233,7 @@ public void modifyJobPriority() throws IOException { assertThat(response.getMasterObjectListResult().getPriority(), is(Priority.HIGH)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -250,6 +254,7 @@ public void modifyJobName() throws IOException { assertThat(response.getMasterObjectListResult().getName(), is("newName")); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -275,6 +280,7 @@ public void modifyJobCreationDate() throws IOException { assertThat(responseAfterModify.getMasterObjectListResult().getStartDate(), is(newDate)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -543,6 +549,7 @@ public void getJobChunksReady() throws IOException { assertThat(chunkNames, contains(ds3Object.getName())); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -568,6 +575,7 @@ public void getJobChunk() throws IOException { assertThat(getJobChunkSpectraS3Response.getObjectsResult(), is(notNullValue())); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -589,6 +597,7 @@ public void aggregateTwoJobs() throws IOException { assertThat(jobOneId, is(jobTwoId)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -612,6 +621,7 @@ public void testPutJobOptionsWithStreamingBehavior() throws IOException { assertThat(jobOneId, is(jobTwoId)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -635,6 +645,7 @@ public void testPutJobOptionsWithRandomAccessBehavior() throws IOException { assertThat(jobOneId, is(jobTwoId)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -652,6 +663,7 @@ public void allocateJobChunk() throws IOException { assertThat(allocateResponse.getStatus(), is(AllocateJobChunkSpectraS3Response.Status.ALLOCATED)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -811,6 +823,7 @@ public void initiateMultipartUpload() throws IOException { assertThat(e.getStatusCode(), is(400)); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1217,6 +1230,7 @@ public void onFailure(final FailureEvent failureEvent) { } } finally { FileUtils.deleteDirectory(tempDirectory.toFile()); + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1290,6 +1304,7 @@ public void waiting(final int secondsToWait) { assertEquals(maxNumObjectTransferAttempts, numWaitingForChunksEventsFired.get()); } finally { FileUtils.deleteDirectory(tempDirectory.toFile()); + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1324,6 +1339,7 @@ public void onFailure(final FailureEvent failureEvent) { } } finally { FileUtils.deleteDirectory(tempDirectory.toFile()); + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1366,6 +1382,7 @@ public void testPutJobUsingTransferStrategy() throws IOException, InterruptedExc assertEquals(FILE_NAMES[0], bucketContents.getKey()); } } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1411,6 +1428,7 @@ public void testWriteJobUsingTransferStrategy() throws IOException, InterruptedE assertEquals(FILE_NAMES[0], bucketContents.getKey()); } } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1473,6 +1491,7 @@ public void monitor() { assertEquals(1, numChunkAllocationAttempts.get()); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1575,6 +1594,7 @@ public void released() { assertEquals(1, numTimesChannelOpened.get()); assertEquals(1, numTimesChannelClosed.get()); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1682,6 +1702,7 @@ public void monitor() { assertEquals(1, numTimesTransferCalled.get()); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1764,6 +1785,7 @@ public void reset() { assertEquals(0, numTimesInvokeCalled.get()); assertEquals(1, numTimesResetCalled.get()); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1824,6 +1846,7 @@ public void testPutJobUsingStreamedTransferStrategy() throws IOException, URISyn assertEquals(FILE_NAMES[0], bucketContents.getKey()); } } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1857,6 +1880,7 @@ public void testPutJobUsingRandomAccessTransferStrategy() throws IOException, UR assertEquals(FILE_NAMES[0], bucketContents.getKey()); } } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -1973,6 +1997,7 @@ public void testPutting15000Files() throws IOException, URISyntaxException { fail("This test makes sure that we don't run out of connections when transferring lots of small files. Oops"); } finally { FileUtils.deleteDirectory(tempDirectory.toFile()); + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } } @@ -2006,6 +2031,7 @@ public void testThatFifoIsNotProcessed() throws IOException, InterruptedExceptio caughtException.set(true); } finally { FileUtils.deleteDirectory(tempDirectory.toFile()); + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } @@ -2058,6 +2084,7 @@ public void testThatNonExistentFileDoesNotStopPutJob() throws IOException { } finally { FileUtils.deleteDirectory(tempDirectoryForFilesToGet.toFile()); FileUtils.deleteDirectory(tempDirectoryForFilesToPut.toFile()); + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); } @@ -2124,6 +2151,7 @@ public void testStreamedPutJobWithBlobbedFile() throws Exception { assertTrue(FileUtils.contentEquals(new File(movedFileName), new File(originalFileName))); } finally { + cancelAllJobsForBucket(client, BUCKET_NAME); deleteAllContents(client, BUCKET_NAME); Files.deleteIfExists(Paths.get(originalFileName)); diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/Regression_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/Regression_Test.java index 43b8e1442..d0823a147 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/Regression_Test.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/Regression_Test.java @@ -89,6 +89,7 @@ public void testMarkerWithSpaces() throws IOException { new Ds3Object("obj4 also has spaces.txt", 1024)); final Ds3ClientHelpers.Job putJob = HELPERS.startWriteJob(bucketName, objects); + putJob.transfer(new RandomDataChannelBuilder(objects)); final Iterable objs = HELPERS.listObjects(bucketName, null, "obj3 has spaces.txt"); boolean foundObj4 = false; @@ -97,7 +98,7 @@ public void testMarkerWithSpaces() throws IOException { if (obj.getKey().equals("obj4 also has spaces.txt")) foundObj4 = true; LOG.info("marker with spaces size: " + obj.getSize()); } - assertTrue(Iterables.size(objs) == 1); + assertThat(Iterables.size(objs), is(1)); assertTrue(foundObj4); final CancelJobSpectraS3Response cancelJobResponse = client @@ -122,6 +123,7 @@ public void testPrefixWithSpaces() throws IOException { new Ds3Object("has spaces obj4.txt", 1024)); final Ds3ClientHelpers.Job putJob = HELPERS.startWriteJob(bucketName, objects); + putJob.transfer(new RandomDataChannelBuilder(objects)); final Iterable objs = HELPERS.listObjects(bucketName, "has spaces"); boolean foundObj2 = false; @@ -132,7 +134,7 @@ public void testPrefixWithSpaces() throws IOException { if (obj.getKey().equals("has spaces obj2.txt")) foundObj2 = true; if (obj.getKey().equals("has spaces obj4.txt")) foundObj4 = true; } - assertTrue(Iterables.size(objs) == 2); + assertThat(Iterables.size(objs), is(2)); assertTrue(foundObj2); assertTrue(foundObj4); @@ -158,6 +160,7 @@ public void testPrefixForDirectoriesWithSpaces() throws IOException { new Ds3Object("dir 2/has spaces obj4.txt", 1024)); final Ds3ClientHelpers.Job putJob = HELPERS.startWriteJob(bucketName, objects); + putJob.transfer(new RandomDataChannelBuilder(objects)); final Iterable dir1Objs = HELPERS.listObjects(bucketName, "dir1/"); boolean foundObj1 = false; @@ -168,7 +171,7 @@ public void testPrefixForDirectoriesWithSpaces() throws IOException { if (obj.getKey().equals("dir1/obj1_no_spaces.txt")) foundObj1 = true; if (obj.getKey().equals("dir1/has spaces obj2.txt")) foundObj2 = true; } - assertTrue(Iterables.size(dir1Objs) == 2); + assertThat(Iterables.size(dir1Objs), is(2)); assertTrue(foundObj1); assertTrue(foundObj2); @@ -181,7 +184,7 @@ public void testPrefixForDirectoriesWithSpaces() throws IOException { if (obj.getKey().equals("dir 2/obj3_no_spaces.txt")) foundObj3 = true; if (obj.getKey().equals("dir 2/has spaces obj4.txt")) foundObj4 = true; } - assertTrue(Iterables.size(objsDir2) == 2); + assertThat(Iterables.size(objsDir2), is(2)); assertTrue(foundObj3); assertTrue(foundObj4); @@ -206,6 +209,7 @@ public void testPrefixForNestedDirectories() throws IOException { new Ds3Object("dir1/dir 2/has spaces obj4.txt", 1024)); final Ds3ClientHelpers.Job putJob = HELPERS.startWriteJob(bucketName, objects); + putJob.transfer(new RandomDataChannelBuilder(objects)); final Iterable dir1Objs = HELPERS.listObjects(bucketName, "dir1/"); boolean foundObj1 = false; @@ -216,7 +220,7 @@ public void testPrefixForNestedDirectories() throws IOException { if (obj.getKey().equals("dir1/obj1_no_spaces.txt")) foundObj1 = true; if (obj.getKey().equals("dir1/has spaces obj2.txt")) foundObj2 = true; } - assertTrue(Iterables.size(dir1Objs) == 4); + assertThat(Iterables.size(dir1Objs), is(4)); assertTrue(foundObj1); assertTrue(foundObj2); @@ -229,7 +233,7 @@ public void testPrefixForNestedDirectories() throws IOException { if (obj.getKey().equals("dir1/dir 2/obj3_no_spaces.txt")) foundObj3 = true; if (obj.getKey().equals("dir1/dir 2/has spaces obj4.txt")) foundObj4 = true; } - assertTrue(Iterables.size(objsDir2) == 2); + assertThat(Iterables.size(objsDir2), is(2)); assertTrue(foundObj3); assertTrue(foundObj4); diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/SpectraS3PaginationLoader_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/SpectraS3PaginationLoader_Test.java index c3e595c51..6fd9a9cfa 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/SpectraS3PaginationLoader_Test.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/SpectraS3PaginationLoader_Test.java @@ -17,7 +17,6 @@ import com.google.common.collect.ImmutableList; import com.spectralogic.ds3client.Ds3Client; -import com.spectralogic.ds3client.commands.spectrads3.PutBulkJobSpectraS3Request; import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; import com.spectralogic.ds3client.helpers.pagination.GetObjectsFullDetailsLoaderFactory; import com.spectralogic.ds3client.integration.test.helpers.TempStorageIds; @@ -76,7 +75,10 @@ public void basicPagination() throws IOException { // test setup HELPERS.ensureBucketExists(TEST_ENV_NAME); final int numObjects = 55; - CLIENT.putBulkJobSpectraS3(new PutBulkJobSpectraS3Request(TEST_ENV_NAME, createTestList(numObjects))); + + final List objects = createTestList(numObjects); + final Ds3ClientHelpers.Job putJob = HELPERS.startWriteJob(TEST_ENV_NAME, objects); + putJob.transfer(new RandomDataChannelBuilder(objects)); final GetObjectsFullDetailsLoaderFactory loaderFactory = new GetObjectsFullDetailsLoaderFactory(CLIENT, TEST_ENV_NAME, 10, RETRIES, false); diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java new file mode 100644 index 000000000..075c5127a --- /dev/null +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java @@ -0,0 +1,92 @@ +/* + * ****************************************************************************** + * Copyright 2014-2018 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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 com.spectralogic.ds3client.integration; + +import com.spectralogic.ds3client.Ds3Client; +import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; +import com.spectralogic.ds3client.integration.test.helpers.TempStorageIds; +import com.spectralogic.ds3client.integration.test.helpers.TempStorageUtil; +import com.spectralogic.ds3client.models.ChecksumType; +import com.spectralogic.ds3client.models.VersioningLevel; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.UUID; + +import static com.spectralogic.ds3client.integration.Util.*; + +public class VersionedObject_Test { + + private static final Logger LOG = LoggerFactory.getLogger(SpectraS3PaginationLoader_Test.class); + + private static final Ds3Client CLIENT = Util.fromEnv(); + private static final Ds3ClientHelpers HELPERS = Ds3ClientHelpers.wrap(CLIENT); + private static final String TEST_ENV_NAME = "java_versioned_object_test"; + private static final int RETRIES = 5; + + private static TempStorageIds envStorageIds; + private static UUID envDataPolicyId; + + @BeforeClass + public static void startup() throws IOException { + LOG.info("Starting test Setup..."); + + // Create data policy with versioning + envDataPolicyId = TempStorageUtil.setupDataPolicy( + TEST_ENV_NAME, + false, + ChecksumType.Type.MD5, + VersioningLevel.KEEP_MULTIPLE_VERSIONS, + CLIENT); + + envStorageIds = TempStorageUtil.setup(TEST_ENV_NAME, envDataPolicyId, CLIENT); + LOG.info("Finished test Setup..."); + } + + @AfterClass + public static void teardown() throws IOException { + LOG.info("Starting test teardown..."); + TempStorageUtil.teardown(TEST_ENV_NAME, envStorageIds, CLIENT); + CLIENT.close(); + LOG.info("Finished test teardown..."); + } + + @Test + public void getObjectsWithVersioning() throws IOException, URISyntaxException { + try { + HELPERS.ensureBucketExists(TEST_ENV_NAME, envDataPolicyId); + final String objectName = "object_with_versions"; + + // Put different content for object twice + loadTestBook(CLIENT, BOOKS[0], objectName, TEST_ENV_NAME); // putting beowulf as content + loadTestBook(CLIENT, BOOKS[1], objectName, TEST_ENV_NAME); // putting sherlock holmes as content + + // TODO Get the version of the objects + + // TODO Create bulk get job with both versions of object specified + + + } finally { + cancelAllJobsForBucket(CLIENT, TEST_ENV_NAME); + deleteAllContents(CLIENT, TEST_ENV_NAME); + } + } +} diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/test/helpers/TempStorageUtil.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/test/helpers/TempStorageUtil.java index 0f7efe21d..c36e17840 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/test/helpers/TempStorageUtil.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/test/helpers/TempStorageUtil.java @@ -19,6 +19,7 @@ import com.spectralogic.ds3client.commands.spectrads3.*; import com.spectralogic.ds3client.models.ChecksumType; import com.spectralogic.ds3client.models.PoolType; +import com.spectralogic.ds3client.models.VersioningLevel; import java.io.IOException; import java.util.UUID; @@ -108,4 +109,23 @@ public static UUID setupDataPolicy( .withDefaultDataPolicyId(dataPolicyResponse.getDataPolicyResult().getId())); return dataPolicyResponse.getDataPolicyResult().getId(); } + + /** + * Creates a Data Policy with the specified checksum type, end-to-end crc, and versioning + */ + public static UUID setupDataPolicy( + final String testSetName, + final boolean withEndToEndCrcRequired, + final ChecksumType.Type checksumType, + final VersioningLevel versioningLevel, + final Ds3Client client) throws IOException { + final PutDataPolicySpectraS3Response dataPolicyResponse = client.putDataPolicySpectraS3( + new PutDataPolicySpectraS3Request(testSetName + DATA_POLICY_NAME) + .withEndToEndCrcRequired(withEndToEndCrcRequired) + .withChecksumType(checksumType).withAlwaysForcePutJobCreation(true) + .withVersioning(versioningLevel)); + client.modifyUserSpectraS3(new ModifyUserSpectraS3Request(DEFAULT_USER) + .withDefaultDataPolicyId(dataPolicyResponse.getDataPolicyResult().getId())); + return dataPolicyResponse.getDataPolicyResult().getId(); + } } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java index 559dfc55e..81aeba046 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java @@ -895,6 +895,12 @@ ModifyJobSpectraS3Response modifyJobSpectraS3(final ModifyJobSpectraS3Request re ReplicatePutJobSpectraS3Response replicatePutJobSpectraS3(final ReplicatePutJobSpectraS3Request request) throws IOException; + @Action("MODIFY") + @Resource("BUCKET") + + StageObjectsJobSpectraS3Response stageObjectsJobSpectraS3(final StageObjectsJobSpectraS3Request request) + throws IOException; + @Action("DELETE") @Resource("ACTIVE_JOB") diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java index a04ac9ca7..425e4e8d0 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java @@ -570,6 +570,10 @@ public ReplicatePutJobSpectraS3Response replicatePutJobSpectraS3(final Replicate return new ReplicatePutJobSpectraS3ResponseParser().response(this.netClient.getResponse(request)); } @Override + public StageObjectsJobSpectraS3Response stageObjectsJobSpectraS3(final StageObjectsJobSpectraS3Request request) throws IOException { + return new StageObjectsJobSpectraS3ResponseParser().response(this.netClient.getResponse(request)); + } + @Override public TruncateActiveJobSpectraS3Response truncateActiveJobSpectraS3(final TruncateActiveJobSpectraS3Request request) throws IOException { return new TruncateActiveJobSpectraS3ResponseParser().response(this.netClient.getResponse(request)); } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectRequest.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectRequest.java index bb2da1b05..ad11d6c7b 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectRequest.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectRequest.java @@ -18,6 +18,8 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; +import java.util.UUID; +import com.google.common.net.UrlEscapers; public class DeleteObjectRequest extends AbstractRequest { @@ -27,7 +29,7 @@ public class DeleteObjectRequest extends AbstractRequest { private final String objectName; - private boolean rollBack; + private String versionId; // Constructor @@ -38,13 +40,16 @@ public DeleteObjectRequest(final String bucketName, final String objectName) { } - public DeleteObjectRequest withRollBack(final boolean rollBack) { - this.rollBack = rollBack; - if (this.rollBack) { - this.getQueryParams().put("roll_back", null); - } else { - this.getQueryParams().remove("roll_back"); - } + public DeleteObjectRequest withVersionId(final UUID versionId) { + this.versionId = versionId.toString(); + this.updateQueryParam("version_id", versionId); + return this; + } + + + public DeleteObjectRequest withVersionId(final String versionId) { + this.versionId = versionId; + this.updateQueryParam("version_id", versionId); return this; } @@ -70,8 +75,8 @@ public String getObjectName() { } - public boolean getRollBack() { - return this.rollBack; + public String getVersionId() { + return this.versionId; } } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectsRequest.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectsRequest.java index 7b370467c..60729e397 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectsRequest.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/DeleteObjectsRequest.java @@ -35,8 +35,6 @@ public class DeleteObjectsRequest extends AbstractRequest { private final List objects; private final String bucketName; - - private boolean rollBack; private boolean quiet = false; private long size; @@ -66,17 +64,6 @@ private static List contentsToString(final Iterable objs) { return objKeyList; } - public DeleteObjectsRequest withRollBack(final boolean rollBack) { - this.rollBack = rollBack; - if (this.rollBack) { - this.getQueryParams().put("roll_back", null); - } else { - this.getQueryParams().remove("roll_back"); - } - return this; - } - - public DeleteObjectsRequest withQuiet(final boolean quiet) { this.quiet = quiet; @@ -128,11 +115,6 @@ public String getBucketName() { } - public boolean getRollBack() { - return this.rollBack; - } - - @Override public long getSize() { return this.size; diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetBucketRequest.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetBucketRequest.java index d2c38fa11..a1d2959f9 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetBucketRequest.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetBucketRequest.java @@ -34,6 +34,8 @@ public class GetBucketRequest extends AbstractRequest { private String prefix; + private boolean versions; + // Constructor @@ -70,6 +72,17 @@ public GetBucketRequest withPrefix(final String prefix) { } + public GetBucketRequest withVersions(final boolean versions) { + this.versions = versions; + if (this.versions) { + this.getQueryParams().put("versions", null); + } else { + this.getQueryParams().remove("versions"); + } + return this; + } + + @Override public HttpVerb getVerb() { @@ -105,4 +118,9 @@ public String getPrefix() { return this.prefix; } + + public boolean getVersions() { + return this.versions; + } + } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetObjectRequest.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetObjectRequest.java index 68c269fcc..7e6facf55 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetObjectRequest.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/GetObjectRequest.java @@ -46,6 +46,8 @@ public class GetObjectRequest extends AbstractRequest { private String job; private long offset; + + private String versionId; private ImmutableCollection byteRanges = null; private ChecksumType checksum = ChecksumType.none(); private ChecksumType.Type checksumType = ChecksumType.Type.NONE; @@ -149,6 +151,20 @@ public GetObjectRequest withOffset(final long offset) { } + public GetObjectRequest withVersionId(final UUID versionId) { + this.versionId = versionId.toString(); + this.updateQueryParam("version_id", versionId); + return this; + } + + + public GetObjectRequest withVersionId(final String versionId) { + this.versionId = versionId; + this.updateQueryParam("version_id", versionId); + return this; + } + + /** * Set a MD5 checksum for the request. @@ -250,6 +266,11 @@ public long getOffset() { } + public String getVersionId() { + return this.versionId; + } + + public Collection getByteRanges() { return this.byteRanges; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/GetBlobsOnTapeSpectraS3ResponseParser.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/GetBlobsOnTapeSpectraS3ResponseParser.java index 150e6711b..c30308283 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/GetBlobsOnTapeSpectraS3ResponseParser.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/GetBlobsOnTapeSpectraS3ResponseParser.java @@ -31,12 +31,14 @@ public class GetBlobsOnTapeSpectraS3ResponseParser extends AbstractResponseParse @Override public GetBlobsOnTapeSpectraS3Response parseXmlResponse(final WebResponse response) throws IOException { final int statusCode = response.getStatusCode(); + final Integer pagingTruncated = parseIntHeader("page-truncated"); + final Integer pagingTotalResultCount = parseIntHeader("total-result-count"); if (ResponseParserUtils.validateStatusCode(statusCode, expectedStatusCodes)) { switch (statusCode) { case 200: try (final InputStream inputStream = response.getResponseStream()) { final BulkObjectList result = XmlOutput.fromXml(inputStream, BulkObjectList.class); - return new GetBlobsOnTapeSpectraS3Response(result, this.getChecksum(), this.getChecksumType()); + return new GetBlobsOnTapeSpectraS3Response(result, pagingTotalResultCount, pagingTruncated, this.getChecksum(), this.getChecksumType()); } default: diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java new file mode 100644 index 000000000..afe980dba --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java @@ -0,0 +1,40 @@ +/* + * ****************************************************************************** + * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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. + * **************************************************************************** + */ + +// This code is auto-generated, do not modify +package com.spectralogic.ds3client.commands.parsers; + +import com.spectralogic.ds3client.commands.parsers.interfaces.AbstractResponseParser; +import com.spectralogic.ds3client.commands.parsers.utils.ResponseParserUtils; +import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Response; +import com.spectralogic.ds3client.networking.WebResponse; +import java.io.IOException; + +public class StageObjectsJobSpectraS3ResponseParser extends AbstractResponseParser { + private final int[] expectedStatusCodes = new int[]{}; + + @Override + public StageObjectsJobSpectraS3Response parseXmlResponse(final WebResponse response) throws IOException { + final int statusCode = response.getStatusCode(); + if (ResponseParserUtils.validateStatusCode(statusCode, expectedStatusCodes)) { + switch (statusCode) { + default: + assert false: "validateStatusCode should have made it impossible to reach this line"; + } + } + + throw ResponseParserUtils.createFailedRequest(response, expectedStatusCodes); + } +} \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/DeleteFolderRecursivelySpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/DeleteFolderRecursivelySpectraS3Request.java index d511ad6ca..46e0a48b0 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/DeleteFolderRecursivelySpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/DeleteFolderRecursivelySpectraS3Request.java @@ -28,8 +28,6 @@ public class DeleteFolderRecursivelySpectraS3Request extends AbstractRequest { private final String bucketId; - private boolean rollBack; - // Constructor @@ -42,17 +40,6 @@ public DeleteFolderRecursivelySpectraS3Request(final String bucketId, final Stri this.getQueryParams().put("recursive", null); } - public DeleteFolderRecursivelySpectraS3Request withRollBack(final boolean rollBack) { - this.rollBack = rollBack; - if (this.rollBack) { - this.getQueryParams().put("roll_back", null); - } else { - this.getQueryParams().remove("roll_back"); - } - return this; - } - - @Override public HttpVerb getVerb() { @@ -73,9 +60,4 @@ public String getBucketId() { return this.bucketId; } - - public boolean getRollBack() { - return this.rollBack; - } - } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java index 5e3909fcc..dfe2b4eb1 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java @@ -36,7 +36,7 @@ public class EjectStorageDomainBlobsSpectraS3Request extends AbstractRequest { private final String bucketId; - private final String storageDomainId; + private final String storageDomain; private final List objects; @@ -48,9 +48,9 @@ public class EjectStorageDomainBlobsSpectraS3Request extends AbstractRequest { // Constructor - public EjectStorageDomainBlobsSpectraS3Request(final String bucketId, final List objects, final UUID storageDomainId) { + public EjectStorageDomainBlobsSpectraS3Request(final String bucketId, final List objects, final String storageDomain) { this.bucketId = bucketId; - this.storageDomainId = storageDomainId.toString(); + this.storageDomain = storageDomain; this.objects = objects; this.getQueryParams().put("operation", "eject"); @@ -58,22 +58,7 @@ public EjectStorageDomainBlobsSpectraS3Request(final String bucketId, final List this.getQueryParams().put("blobs", null); this.updateQueryParam("bucket_id", bucketId); - this.updateQueryParam("storage_domain_id", storageDomainId); - - } - - - public EjectStorageDomainBlobsSpectraS3Request(final String bucketId, final List objects, final String storageDomainId) { - this.bucketId = bucketId; - this.storageDomainId = storageDomainId; - this.objects = objects; - - this.getQueryParams().put("operation", "eject"); - - this.getQueryParams().put("blobs", null); - this.updateQueryParam("bucket_id", bucketId); - - this.updateQueryParam("storage_domain_id", storageDomainId); + this.updateQueryParam("storage_domain", storageDomain); } @@ -127,8 +112,8 @@ public String getBucketId() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } @@ -146,5 +131,4 @@ public String getEjectLocation() { return this.ejectLocation; } - } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainSpectraS3Request.java index 5acdc03ab..da025cc71 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainSpectraS3Request.java @@ -18,14 +18,13 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import java.util.UUID; import com.google.common.net.UrlEscapers; public class EjectStorageDomainSpectraS3Request extends AbstractRequest { // Variables - private final String storageDomainId; + private final String storageDomain; private String bucketId; @@ -36,22 +35,12 @@ public class EjectStorageDomainSpectraS3Request extends AbstractRequest { // Constructor - public EjectStorageDomainSpectraS3Request(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); + public EjectStorageDomainSpectraS3Request(final String storageDomain) { + this.storageDomain = storageDomain; this.getQueryParams().put("operation", "eject"); - this.updateQueryParam("storage_domain_id", storageDomainId); - - } - - - public EjectStorageDomainSpectraS3Request(final String storageDomainId) { - this.storageDomainId = storageDomainId; - - this.getQueryParams().put("operation", "eject"); - - this.updateQueryParam("storage_domain_id", storageDomainId); + this.updateQueryParam("storage_domain", storageDomain); } @@ -87,8 +76,8 @@ public String getPath() { return "/_rest_/tape"; } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Request.java index 453689c31..a4574f1f7 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Request.java @@ -17,16 +17,24 @@ package com.spectralogic.ds3client.commands.spectrads3; import com.spectralogic.ds3client.networking.HttpVerb; -import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; +import com.spectralogic.ds3client.commands.interfaces.AbstractPaginationRequest; import java.util.UUID; import com.google.common.net.UrlEscapers; -public class GetBlobsOnTapeSpectraS3Request extends AbstractRequest { +public class GetBlobsOnTapeSpectraS3Request extends AbstractPaginationRequest { // Variables private final String tapeId; + private boolean lastPage; + + private int pageLength; + + private int pageOffset; + + private String pageStartMarker; + // Constructor @@ -45,6 +53,45 @@ public GetBlobsOnTapeSpectraS3Request(final String tapeId) { } + public GetBlobsOnTapeSpectraS3Request withLastPage(final boolean lastPage) { + this.lastPage = lastPage; + if (this.lastPage) { + this.getQueryParams().put("last_page", null); + } else { + this.getQueryParams().remove("last_page"); + } + return this; + } + + + public GetBlobsOnTapeSpectraS3Request withPageLength(final int pageLength) { + this.pageLength = pageLength; + this.updateQueryParam("page_length", pageLength); + return this; + } + + + public GetBlobsOnTapeSpectraS3Request withPageOffset(final int pageOffset) { + this.pageOffset = pageOffset; + this.updateQueryParam("page_offset", pageOffset); + return this; + } + + + public GetBlobsOnTapeSpectraS3Request withPageStartMarker(final UUID pageStartMarker) { + this.pageStartMarker = pageStartMarker.toString(); + this.updateQueryParam("page_start_marker", pageStartMarker); + return this; + } + + + public GetBlobsOnTapeSpectraS3Request withPageStartMarker(final String pageStartMarker) { + this.pageStartMarker = pageStartMarker; + this.updateQueryParam("page_start_marker", pageStartMarker); + return this; + } + + @Override public HttpVerb getVerb() { @@ -60,4 +107,24 @@ public String getTapeId() { return this.tapeId; } + + public boolean getLastPage() { + return this.lastPage; + } + + + public int getPageLength() { + return this.pageLength; + } + + + public int getPageOffset() { + return this.pageOffset; + } + + + public String getPageStartMarker() { + return this.pageStartMarker; + } + } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Response.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Response.java index e20f6dcf3..7eeb7a721 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Response.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetBlobsOnTapeSpectraS3Response.java @@ -18,14 +18,14 @@ import com.spectralogic.ds3client.models.BulkObjectList; import com.spectralogic.ds3client.models.ChecksumType; -import com.spectralogic.ds3client.commands.interfaces.AbstractResponse; +import com.spectralogic.ds3client.commands.interfaces.AbstractPaginationResponse; + +public class GetBlobsOnTapeSpectraS3Response extends AbstractPaginationResponse { -public class GetBlobsOnTapeSpectraS3Response extends AbstractResponse { - private final BulkObjectList bulkObjectListResult; - public GetBlobsOnTapeSpectraS3Response(final BulkObjectList bulkObjectListResult, final String checksum, final ChecksumType.Type checksumType) { - super(checksum, checksumType); + public GetBlobsOnTapeSpectraS3Response(final BulkObjectList bulkObjectListResult, final Integer pagingTotalResultCount, final Integer pagingTruncated, final String checksum, final ChecksumType.Type checksumType) { + super(pagingTotalResultCount, pagingTruncated, checksum, checksumType); this.bulkObjectListResult = bulkObjectListResult; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsDetailsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsDetailsSpectraS3Request.java index d8fd50532..ba524565c 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsDetailsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsDetailsSpectraS3Request.java @@ -28,6 +28,8 @@ public class GetObjectsDetailsSpectraS3Request extends AbstractPaginationRequest private String bucketId; + private long endDate; + private boolean lastPage; private boolean latest; @@ -40,9 +42,9 @@ public class GetObjectsDetailsSpectraS3Request extends AbstractPaginationRequest private String pageStartMarker; - private S3ObjectType type; + private long startDate; - private long version; + private S3ObjectType type; // Constructor @@ -58,6 +60,13 @@ public GetObjectsDetailsSpectraS3Request withBucketId(final String bucketId) { } + public GetObjectsDetailsSpectraS3Request withEndDate(final long endDate) { + this.endDate = endDate; + this.updateQueryParam("end_date", endDate); + return this; + } + + public GetObjectsDetailsSpectraS3Request withLastPage(final boolean lastPage) { this.lastPage = lastPage; if (this.lastPage) { @@ -111,16 +120,16 @@ public GetObjectsDetailsSpectraS3Request withPageStartMarker(final String pageSt } - public GetObjectsDetailsSpectraS3Request withType(final S3ObjectType type) { - this.type = type; - this.updateQueryParam("type", type); + public GetObjectsDetailsSpectraS3Request withStartDate(final long startDate) { + this.startDate = startDate; + this.updateQueryParam("start_date", startDate); return this; } - public GetObjectsDetailsSpectraS3Request withVersion(final long version) { - this.version = version; - this.updateQueryParam("version", version); + public GetObjectsDetailsSpectraS3Request withType(final S3ObjectType type) { + this.type = type; + this.updateQueryParam("type", type); return this; } @@ -141,6 +150,11 @@ public String getBucketId() { } + public long getEndDate() { + return this.endDate; + } + + public boolean getLastPage() { return this.lastPage; } @@ -171,13 +185,13 @@ public String getPageStartMarker() { } - public S3ObjectType getType() { - return this.type; + public long getStartDate() { + return this.startDate; } - public long getVersion() { - return this.version; + public S3ObjectType getType() { + return this.type; } } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsWithFullDetailsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsWithFullDetailsSpectraS3Request.java index 5f021cdad..6b6ba4fd1 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsWithFullDetailsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetObjectsWithFullDetailsSpectraS3Request.java @@ -28,6 +28,8 @@ public class GetObjectsWithFullDetailsSpectraS3Request extends AbstractPaginatio private String bucketId; + private long endDate; + private boolean includePhysicalPlacement; private boolean lastPage; @@ -42,9 +44,9 @@ public class GetObjectsWithFullDetailsSpectraS3Request extends AbstractPaginatio private String pageStartMarker; - private S3ObjectType type; + private long startDate; - private long version; + private S3ObjectType type; // Constructor @@ -61,6 +63,13 @@ public GetObjectsWithFullDetailsSpectraS3Request withBucketId(final String bucke } + public GetObjectsWithFullDetailsSpectraS3Request withEndDate(final long endDate) { + this.endDate = endDate; + this.updateQueryParam("end_date", endDate); + return this; + } + + public GetObjectsWithFullDetailsSpectraS3Request withIncludePhysicalPlacement(final boolean includePhysicalPlacement) { this.includePhysicalPlacement = includePhysicalPlacement; if (this.includePhysicalPlacement) { @@ -125,16 +134,16 @@ public GetObjectsWithFullDetailsSpectraS3Request withPageStartMarker(final Strin } - public GetObjectsWithFullDetailsSpectraS3Request withType(final S3ObjectType type) { - this.type = type; - this.updateQueryParam("type", type); + public GetObjectsWithFullDetailsSpectraS3Request withStartDate(final long startDate) { + this.startDate = startDate; + this.updateQueryParam("start_date", startDate); return this; } - public GetObjectsWithFullDetailsSpectraS3Request withVersion(final long version) { - this.version = version; - this.updateQueryParam("version", version); + public GetObjectsWithFullDetailsSpectraS3Request withType(final S3ObjectType type) { + this.type = type; + this.updateQueryParam("type", type); return this; } @@ -155,6 +164,11 @@ public String getBucketId() { } + public long getEndDate() { + return this.endDate; + } + + public boolean getIncludePhysicalPlacement() { return this.includePhysicalPlacement; } @@ -190,13 +204,13 @@ public String getPageStartMarker() { } - public S3ObjectType getType() { - return this.type; + public long getStartDate() { + return this.startDate; } - public long getVersion() { - return this.version; + public S3ObjectType getType() { + return this.type; } } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsSpectraS3Request.java index 0e0ae220c..5d229218f 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsSpectraS3Request.java @@ -27,7 +27,6 @@ import java.util.List; import java.nio.charset.Charset; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import java.util.UUID; import com.google.common.net.UrlEscapers; public class GetPhysicalPlacementForObjectsSpectraS3Request extends AbstractRequest { @@ -38,7 +37,7 @@ public class GetPhysicalPlacementForObjectsSpectraS3Request extends AbstractRequ private final List objects; - private String storageDomainId; + private String storageDomain; private long size = 0; // Constructor @@ -52,16 +51,9 @@ public GetPhysicalPlacementForObjectsSpectraS3Request(final String bucketName, f } - public GetPhysicalPlacementForObjectsSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); - return this; - } - - - public GetPhysicalPlacementForObjectsSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetPhysicalPlacementForObjectsSpectraS3Request withStorageDomain(final String storageDomain) { + this.storageDomain = storageDomain; + this.updateQueryParam("storage_domain", storageDomain); return this; } @@ -107,8 +99,8 @@ public List getObjects() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java index 891dd21f5..823687e4b 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java @@ -27,7 +27,6 @@ import java.util.List; import java.nio.charset.Charset; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import java.util.UUID; import com.google.common.net.UrlEscapers; public class GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request extends AbstractRequest { @@ -38,7 +37,7 @@ public class GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request exten private final List objects; - private String storageDomainId; + private String storageDomain; private long size = 0; // Constructor @@ -53,16 +52,9 @@ public GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request(final Strin this.getQueryParams().put("full_details", null); } - public GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); - return this; - } - - - public GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request withStorageDomain(final String storageDomain) { + this.storageDomain = storageDomain; + this.updateQueryParam("storage_domain", storageDomain); return this; } @@ -108,8 +100,8 @@ public List getObjects() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPoolsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPoolsSpectraS3Request.java index b783870c7..be1317a65 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPoolsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetPoolsSpectraS3Request.java @@ -55,7 +55,7 @@ public class GetPoolsSpectraS3Request extends AbstractPaginationRequest { private PoolState state; - private String storageDomainId; + private String storageDomainMemberId; private PoolType type; @@ -175,16 +175,16 @@ public GetPoolsSpectraS3Request withState(final PoolState state) { } - public GetPoolsSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetPoolsSpectraS3Request withStorageDomainMemberId(final UUID storageDomainMemberId) { + this.storageDomainMemberId = storageDomainMemberId.toString(); + this.updateQueryParam("storage_domain_member_id", storageDomainMemberId); return this; } - public GetPoolsSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetPoolsSpectraS3Request withStorageDomainMemberId(final String storageDomainMemberId) { + this.storageDomainMemberId = storageDomainMemberId; + this.updateQueryParam("storage_domain_member_id", storageDomainMemberId); return this; } @@ -272,8 +272,8 @@ public PoolState getState() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomainMemberId() { + return this.storageDomainMemberId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetSuspectObjectsWithFullDetailsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetSuspectObjectsWithFullDetailsSpectraS3Request.java index 3622a162a..6cda546d6 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetSuspectObjectsWithFullDetailsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetSuspectObjectsWithFullDetailsSpectraS3Request.java @@ -19,7 +19,6 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; import com.google.common.net.UrlEscapers; -import java.util.UUID; public class GetSuspectObjectsWithFullDetailsSpectraS3Request extends AbstractRequest { @@ -27,7 +26,7 @@ public class GetSuspectObjectsWithFullDetailsSpectraS3Request extends AbstractRe private String bucketId; - private String storageDomainId; + private String storageDomain; // Constructor @@ -44,16 +43,9 @@ public GetSuspectObjectsWithFullDetailsSpectraS3Request withBucketId(final Strin } - public GetSuspectObjectsWithFullDetailsSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); - return this; - } - - - public GetSuspectObjectsWithFullDetailsSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetSuspectObjectsWithFullDetailsSpectraS3Request withStorageDomain(final String storageDomain) { + this.storageDomain = storageDomain; + this.updateQueryParam("storage_domain", storageDomain); return this; } @@ -74,8 +66,8 @@ public String getBucketId() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetTapesSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetTapesSpectraS3Request.java index 5a9330fc9..1d6e8b682 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetTapesSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/GetTapesSpectraS3Request.java @@ -65,7 +65,7 @@ public class GetTapesSpectraS3Request extends AbstractPaginationRequest { private TapeState state; - private String storageDomainId; + private String storageDomainMemberId; private String type; @@ -224,16 +224,16 @@ public GetTapesSpectraS3Request withState(final TapeState state) { } - public GetTapesSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetTapesSpectraS3Request withStorageDomainMemberId(final UUID storageDomainMemberId) { + this.storageDomainMemberId = storageDomainMemberId.toString(); + this.updateQueryParam("storage_domain_member_id", storageDomainMemberId); return this; } - public GetTapesSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public GetTapesSpectraS3Request withStorageDomainMemberId(final String storageDomainMemberId) { + this.storageDomainMemberId = storageDomainMemberId; + this.updateQueryParam("storage_domain_member_id", storageDomainMemberId); return this; } @@ -360,8 +360,8 @@ public TapeState getState() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomainMemberId() { + return this.storageDomainMemberId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java index d9e13c021..235dbaf53 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java @@ -18,16 +18,15 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; -import java.util.UUID; import com.google.common.net.UrlEscapers; +import java.util.UUID; import com.spectralogic.ds3client.models.Priority; public class ImportAllPoolsSpectraS3Request extends AbstractRequest { // Variables - private ImportConflictResolutionMode conflictResolutionMode; + private String conflictResolutionMode; private String dataPolicyId; @@ -50,7 +49,7 @@ public ImportAllPoolsSpectraS3Request() { } - public ImportAllPoolsSpectraS3Request withConflictResolutionMode(final ImportConflictResolutionMode conflictResolutionMode) { + public ImportAllPoolsSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { this.conflictResolutionMode = conflictResolutionMode; this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); return this; @@ -131,7 +130,7 @@ public String getPath() { return "/_rest_/pool"; } - public ImportConflictResolutionMode getConflictResolutionMode() { + public String getConflictResolutionMode() { return this.conflictResolutionMode; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java index d7c174b90..a5050a9a0 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java @@ -18,16 +18,15 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; -import java.util.UUID; import com.google.common.net.UrlEscapers; +import java.util.UUID; import com.spectralogic.ds3client.models.Priority; public class ImportAllTapesSpectraS3Request extends AbstractRequest { // Variables - private ImportConflictResolutionMode conflictResolutionMode; + private String conflictResolutionMode; private String dataPolicyId; @@ -50,7 +49,7 @@ public ImportAllTapesSpectraS3Request() { } - public ImportAllTapesSpectraS3Request withConflictResolutionMode(final ImportConflictResolutionMode conflictResolutionMode) { + public ImportAllTapesSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { this.conflictResolutionMode = conflictResolutionMode; this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); return this; @@ -131,7 +130,7 @@ public String getPath() { return "/_rest_/tape"; } - public ImportConflictResolutionMode getConflictResolutionMode() { + public String getConflictResolutionMode() { return this.conflictResolutionMode; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAzureTargetSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAzureTargetSpectraS3Request.java index 55c99503d..c92c57cd2 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAzureTargetSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAzureTargetSpectraS3Request.java @@ -19,7 +19,6 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; import com.google.common.net.UrlEscapers; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; import java.util.UUID; import com.spectralogic.ds3client.models.Priority; @@ -31,8 +30,6 @@ public class ImportAzureTargetSpectraS3Request extends AbstractRequest { private final String cloudBucketName; - private ImportConflictResolutionMode conflictResolutionMode; - private String dataPolicyId; private Priority priority; @@ -52,13 +49,6 @@ public ImportAzureTargetSpectraS3Request(final String azureTarget, final String } - public ImportAzureTargetSpectraS3Request withConflictResolutionMode(final ImportConflictResolutionMode conflictResolutionMode) { - this.conflictResolutionMode = conflictResolutionMode; - this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); - return this; - } - - public ImportAzureTargetSpectraS3Request withDataPolicyId(final UUID dataPolicyId) { this.dataPolicyId = dataPolicyId.toString(); this.updateQueryParam("data_policy_id", dataPolicyId); @@ -115,11 +105,6 @@ public String getCloudBucketName() { } - public ImportConflictResolutionMode getConflictResolutionMode() { - return this.conflictResolutionMode; - } - - public String getDataPolicyId() { return this.dataPolicyId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java index 4adf8a55b..4addf085a 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java @@ -18,9 +18,8 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; -import java.util.UUID; import com.google.common.net.UrlEscapers; +import java.util.UUID; import com.spectralogic.ds3client.models.Priority; public class ImportPoolSpectraS3Request extends AbstractRequest { @@ -29,7 +28,7 @@ public class ImportPoolSpectraS3Request extends AbstractRequest { private final String pool; - private ImportConflictResolutionMode conflictResolutionMode; + private String conflictResolutionMode; private String dataPolicyId; @@ -53,7 +52,7 @@ public ImportPoolSpectraS3Request(final String pool) { } - public ImportPoolSpectraS3Request withConflictResolutionMode(final ImportConflictResolutionMode conflictResolutionMode) { + public ImportPoolSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { this.conflictResolutionMode = conflictResolutionMode; this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); return this; @@ -139,7 +138,7 @@ public String getPool() { } - public ImportConflictResolutionMode getConflictResolutionMode() { + public String getConflictResolutionMode() { return this.conflictResolutionMode; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportS3TargetSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportS3TargetSpectraS3Request.java index 8cdf9878e..5350614f2 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportS3TargetSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportS3TargetSpectraS3Request.java @@ -19,7 +19,6 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; import com.google.common.net.UrlEscapers; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; import java.util.UUID; import com.spectralogic.ds3client.models.Priority; @@ -31,8 +30,6 @@ public class ImportS3TargetSpectraS3Request extends AbstractRequest { private final String cloudBucketName; - private ImportConflictResolutionMode conflictResolutionMode; - private String dataPolicyId; private Priority priority; @@ -52,13 +49,6 @@ public ImportS3TargetSpectraS3Request(final String cloudBucketName, final String } - public ImportS3TargetSpectraS3Request withConflictResolutionMode(final ImportConflictResolutionMode conflictResolutionMode) { - this.conflictResolutionMode = conflictResolutionMode; - this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); - return this; - } - - public ImportS3TargetSpectraS3Request withDataPolicyId(final UUID dataPolicyId) { this.dataPolicyId = dataPolicyId.toString(); this.updateQueryParam("data_policy_id", dataPolicyId); @@ -115,11 +105,6 @@ public String getCloudBucketName() { } - public ImportConflictResolutionMode getConflictResolutionMode() { - return this.conflictResolutionMode; - } - - public String getDataPolicyId() { return this.dataPolicyId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java index dc8bfd7f7..b126327ef 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java @@ -18,9 +18,8 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; -import java.util.UUID; import com.google.common.net.UrlEscapers; +import java.util.UUID; import com.spectralogic.ds3client.models.Priority; public class ImportTapeSpectraS3Request extends AbstractRequest { @@ -29,7 +28,7 @@ public class ImportTapeSpectraS3Request extends AbstractRequest { private final String tapeId; - private ImportConflictResolutionMode conflictResolutionMode; + private String conflictResolutionMode; private String dataPolicyId; @@ -61,7 +60,7 @@ public ImportTapeSpectraS3Request(final String tapeId) { } - public ImportTapeSpectraS3Request withConflictResolutionMode(final ImportConflictResolutionMode conflictResolutionMode) { + public ImportTapeSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { this.conflictResolutionMode = conflictResolutionMode; this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); return this; @@ -147,7 +146,7 @@ public String getTapeId() { } - public ImportConflictResolutionMode getConflictResolutionMode() { + public String getConflictResolutionMode() { return this.conflictResolutionMode; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPathBackendSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPathBackendSpectraS3Request.java index 68851dc63..e58104856 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPathBackendSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPathBackendSpectraS3Request.java @@ -20,7 +20,6 @@ import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; import java.lang.Integer; import com.spectralogic.ds3client.models.AutoInspectMode; -import com.spectralogic.ds3client.models.ImportConflictResolutionMode; import com.spectralogic.ds3client.models.Priority; import com.spectralogic.ds3client.models.UnavailableMediaUsagePolicy; @@ -38,12 +37,12 @@ public class ModifyDataPathBackendSpectraS3Request extends AbstractRequest { private int cacheAvailableRetryAfterInSeconds; - private ImportConflictResolutionMode defaultImportConflictResolutionMode; - private Priority defaultVerifyDataAfterImport; private boolean defaultVerifyDataPriorToImport; + private boolean iomEnabled; + private Integer partiallyVerifyLastPercentOfTapes; private UnavailableMediaUsagePolicy unavailableMediaPolicy; @@ -94,13 +93,6 @@ public ModifyDataPathBackendSpectraS3Request withCacheAvailableRetryAfterInSecon } - public ModifyDataPathBackendSpectraS3Request withDefaultImportConflictResolutionMode(final ImportConflictResolutionMode defaultImportConflictResolutionMode) { - this.defaultImportConflictResolutionMode = defaultImportConflictResolutionMode; - this.updateQueryParam("default_import_conflict_resolution_mode", defaultImportConflictResolutionMode); - return this; - } - - public ModifyDataPathBackendSpectraS3Request withDefaultVerifyDataAfterImport(final Priority defaultVerifyDataAfterImport) { this.defaultVerifyDataAfterImport = defaultVerifyDataAfterImport; this.updateQueryParam("default_verify_data_after_import", defaultVerifyDataAfterImport); @@ -115,6 +107,13 @@ public ModifyDataPathBackendSpectraS3Request withDefaultVerifyDataPriorToImport( } + public ModifyDataPathBackendSpectraS3Request withIomEnabled(final boolean iomEnabled) { + this.iomEnabled = iomEnabled; + this.updateQueryParam("iom_enabled", iomEnabled); + return this; + } + + public ModifyDataPathBackendSpectraS3Request withPartiallyVerifyLastPercentOfTapes(final Integer partiallyVerifyLastPercentOfTapes) { this.partiallyVerifyLastPercentOfTapes = partiallyVerifyLastPercentOfTapes; this.updateQueryParam("partially_verify_last_percent_of_tapes", partiallyVerifyLastPercentOfTapes); @@ -179,11 +178,6 @@ public int getCacheAvailableRetryAfterInSeconds() { } - public ImportConflictResolutionMode getDefaultImportConflictResolutionMode() { - return this.defaultImportConflictResolutionMode; - } - - public Priority getDefaultVerifyDataAfterImport() { return this.defaultVerifyDataAfterImport; } @@ -194,6 +188,11 @@ public boolean getDefaultVerifyDataPriorToImport() { } + public boolean getIomEnabled() { + return this.iomEnabled; + } + + public Integer getPartiallyVerifyLastPercentOfTapes() { return this.partiallyVerifyLastPercentOfTapes; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPolicySpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPolicySpectraS3Request.java index 945506790..e5598676f 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPolicySpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyDataPolicySpectraS3Request.java @@ -51,6 +51,8 @@ public class ModifyDataPolicySpectraS3Request extends AbstractRequest { private boolean endToEndCrcRequired; + private int maxVersionsToKeep; + private String name; private Priority rebuildPriority; @@ -141,6 +143,13 @@ public ModifyDataPolicySpectraS3Request withEndToEndCrcRequired(final boolean en } + public ModifyDataPolicySpectraS3Request withMaxVersionsToKeep(final int maxVersionsToKeep) { + this.maxVersionsToKeep = maxVersionsToKeep; + this.updateQueryParam("max_versions_to_keep", maxVersionsToKeep); + return this; + } + + public ModifyDataPolicySpectraS3Request withName(final String name) { this.name = name; this.updateQueryParam("name", name); @@ -228,6 +237,11 @@ public boolean getEndToEndCrcRequired() { } + public int getMaxVersionsToKeep() { + return this.maxVersionsToKeep; + } + + public String getName() { return this.name; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyStorageDomainMemberSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyStorageDomainMemberSpectraS3Request.java index 5fe3583a4..e4a6c6463 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyStorageDomainMemberSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyStorageDomainMemberSpectraS3Request.java @@ -18,6 +18,8 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; +import java.lang.Integer; +import com.spectralogic.ds3client.models.StorageDomainMemberState; import com.spectralogic.ds3client.models.WritePreferenceLevel; import com.google.common.net.UrlEscapers; @@ -27,6 +29,10 @@ public class ModifyStorageDomainMemberSpectraS3Request extends AbstractRequest { private final String storageDomainMember; + private Integer autoCompactionThreshold; + + private StorageDomainMemberState state; + private WritePreferenceLevel writePreference; // Constructor @@ -37,6 +43,20 @@ public ModifyStorageDomainMemberSpectraS3Request(final String storageDomainMembe } + public ModifyStorageDomainMemberSpectraS3Request withAutoCompactionThreshold(final Integer autoCompactionThreshold) { + this.autoCompactionThreshold = autoCompactionThreshold; + this.updateQueryParam("auto_compaction_threshold", autoCompactionThreshold); + return this; + } + + + public ModifyStorageDomainMemberSpectraS3Request withState(final StorageDomainMemberState state) { + this.state = state; + this.updateQueryParam("state", state); + return this; + } + + public ModifyStorageDomainMemberSpectraS3Request withWritePreference(final WritePreferenceLevel writePreference) { this.writePreference = writePreference; this.updateQueryParam("write_preference", writePreference); @@ -60,6 +80,16 @@ public String getStorageDomainMember() { } + public Integer getAutoCompactionThreshold() { + return this.autoCompactionThreshold; + } + + + public StorageDomainMemberState getState() { + return this.state; + } + + public WritePreferenceLevel getWritePreference() { return this.writePreference; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java index d59f129a3..0dba73b94 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java @@ -27,6 +27,8 @@ public class ModifyTapePartitionSpectraS3Request extends AbstractRequest { private final String tapePartition; + private boolean autoCompactionEnabled; + private int minimumReadReservedDrives; private int minimumWriteReservedDrives; @@ -41,6 +43,13 @@ public ModifyTapePartitionSpectraS3Request(final String tapePartition) { } + public ModifyTapePartitionSpectraS3Request withAutoCompactionEnabled(final boolean autoCompactionEnabled) { + this.autoCompactionEnabled = autoCompactionEnabled; + this.updateQueryParam("auto_compaction_enabled", autoCompactionEnabled); + return this; + } + + public ModifyTapePartitionSpectraS3Request withMinimumReadReservedDrives(final int minimumReadReservedDrives) { this.minimumReadReservedDrives = minimumReadReservedDrives; this.updateQueryParam("minimum_read_reserved_drives", minimumReadReservedDrives); @@ -78,6 +87,11 @@ public String getTapePartition() { } + public boolean getAutoCompactionEnabled() { + return this.autoCompactionEnabled; + } + + public int getMinimumReadReservedDrives() { return this.minimumReadReservedDrives; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyUserSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyUserSpectraS3Request.java index a4350dd3d..2e80d47a2 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyUserSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyUserSpectraS3Request.java @@ -29,6 +29,8 @@ public class ModifyUserSpectraS3Request extends AbstractRequest { private String defaultDataPolicyId; + private int maxBuckets; + private String name; private String secretKey; @@ -61,6 +63,13 @@ public ModifyUserSpectraS3Request withDefaultDataPolicyId(final String defaultDa } + public ModifyUserSpectraS3Request withMaxBuckets(final int maxBuckets) { + this.maxBuckets = maxBuckets; + this.updateQueryParam("max_buckets", maxBuckets); + return this; + } + + public ModifyUserSpectraS3Request withName(final String name) { this.name = name; this.updateQueryParam("name", name); @@ -96,6 +105,11 @@ public String getDefaultDataPolicyId() { } + public int getMaxBuckets() { + return this.maxBuckets; + } + + public String getName() { return this.name; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutDataPolicySpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutDataPolicySpectraS3Request.java index 0626a9a40..634ad0b16 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutDataPolicySpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutDataPolicySpectraS3Request.java @@ -50,6 +50,8 @@ public class PutDataPolicySpectraS3Request extends AbstractRequest { private boolean endToEndCrcRequired; + private int maxVersionsToKeep; + private Priority rebuildPriority; private VersioningLevel versioning; @@ -134,6 +136,13 @@ public PutDataPolicySpectraS3Request withEndToEndCrcRequired(final boolean endTo } + public PutDataPolicySpectraS3Request withMaxVersionsToKeep(final int maxVersionsToKeep) { + this.maxVersionsToKeep = maxVersionsToKeep; + this.updateQueryParam("max_versions_to_keep", maxVersionsToKeep); + return this; + } + + public PutDataPolicySpectraS3Request withRebuildPriority(final Priority rebuildPriority) { this.rebuildPriority = rebuildPriority; this.updateQueryParam("rebuild_priority", rebuildPriority); @@ -214,6 +223,11 @@ public boolean getEndToEndCrcRequired() { } + public int getMaxVersionsToKeep() { + return this.maxVersionsToKeep; + } + + public Priority getRebuildPriority() { return this.rebuildPriority; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutTapeStorageDomainMemberSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutTapeStorageDomainMemberSpectraS3Request.java index c74c01fd6..3c44e3a23 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutTapeStorageDomainMemberSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/PutTapeStorageDomainMemberSpectraS3Request.java @@ -20,6 +20,7 @@ import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; import java.util.UUID; import com.google.common.net.UrlEscapers; +import java.lang.Integer; import com.spectralogic.ds3client.models.WritePreferenceLevel; public class PutTapeStorageDomainMemberSpectraS3Request extends AbstractRequest { @@ -32,6 +33,8 @@ public class PutTapeStorageDomainMemberSpectraS3Request extends AbstractRequest private final String tapeType; + private Integer autoCompactionThreshold; + private WritePreferenceLevel writePreference; // Constructor @@ -64,6 +67,13 @@ public PutTapeStorageDomainMemberSpectraS3Request(final String storageDomainId, } + public PutTapeStorageDomainMemberSpectraS3Request withAutoCompactionThreshold(final Integer autoCompactionThreshold) { + this.autoCompactionThreshold = autoCompactionThreshold; + this.updateQueryParam("auto_compaction_threshold", autoCompactionThreshold); + return this; + } + + public PutTapeStorageDomainMemberSpectraS3Request withWritePreference(final WritePreferenceLevel writePreference) { this.writePreference = writePreference; this.updateQueryParam("write_preference", writePreference); @@ -97,6 +107,11 @@ public String getTapeType() { } + public Integer getAutoCompactionThreshold() { + return this.autoCompactionThreshold; + } + + public WritePreferenceLevel getWritePreference() { return this.writePreference; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java new file mode 100644 index 000000000..8ba4125bc --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java @@ -0,0 +1,83 @@ +/* + * ****************************************************************************** + * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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. + * **************************************************************************** + */ + +// This code is auto-generated, do not modify +package com.spectralogic.ds3client.commands.spectrads3; + +import com.spectralogic.ds3client.networking.HttpVerb; +import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; +import com.google.common.net.UrlEscapers; +import com.spectralogic.ds3client.models.Priority; + +public class StageObjectsJobSpectraS3Request extends AbstractRequest { + + // Variables + + private final String bucketName; + + private String name; + + private Priority priority; + + // Constructor + + + public StageObjectsJobSpectraS3Request(final String bucketName) { + this.bucketName = bucketName; + + this.getQueryParams().put("operation", "start_bulk_stage"); + + } + + public StageObjectsJobSpectraS3Request withName(final String name) { + this.name = name; + this.updateQueryParam("name", name); + return this; + } + + + public StageObjectsJobSpectraS3Request withPriority(final Priority priority) { + this.priority = priority; + this.updateQueryParam("priority", priority); + return this; + } + + + + @Override + public HttpVerb getVerb() { + return HttpVerb.PUT; + } + + @Override + public String getPath() { + return "/_rest_/bucket/" + this.bucketName; + } + + public String getBucketName() { + return this.bucketName; + } + + + public String getName() { + return this.name; + } + + + public Priority getPriority() { + return this.priority; + } + +} \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java new file mode 100644 index 000000000..7f7143462 --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java @@ -0,0 +1,28 @@ +/* + * ****************************************************************************** + * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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. + * **************************************************************************** + */ + +// This code is auto-generated, do not modify +package com.spectralogic.ds3client.commands.spectrads3; + +import com.spectralogic.ds3client.models.ChecksumType; +import com.spectralogic.ds3client.commands.interfaces.AbstractResponse; + +public class StageObjectsJobSpectraS3Response extends AbstractResponse { + + public StageObjectsJobSpectraS3Response(final String checksum, final ChecksumType.Type checksumType) { + super(checksum, checksumType); + } + +} \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsSpectraS3Request.java index 6a1f7f72c..4057799e1 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsSpectraS3Request.java @@ -27,7 +27,6 @@ import java.util.List; import java.nio.charset.Charset; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import java.util.UUID; import com.google.common.net.UrlEscapers; public class VerifyPhysicalPlacementForObjectsSpectraS3Request extends AbstractRequest { @@ -38,7 +37,7 @@ public class VerifyPhysicalPlacementForObjectsSpectraS3Request extends AbstractR private final List objects; - private String storageDomainId; + private String storageDomain; private long size = 0; // Constructor @@ -52,16 +51,9 @@ public VerifyPhysicalPlacementForObjectsSpectraS3Request(final String bucketName } - public VerifyPhysicalPlacementForObjectsSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); - return this; - } - - - public VerifyPhysicalPlacementForObjectsSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public VerifyPhysicalPlacementForObjectsSpectraS3Request withStorageDomain(final String storageDomain) { + this.storageDomain = storageDomain; + this.updateQueryParam("storage_domain", storageDomain); return this; } @@ -107,8 +99,8 @@ public List getObjects() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java index 98b0597fb..0f4ee9d73 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request.java @@ -27,7 +27,6 @@ import java.util.List; import java.nio.charset.Charset; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import java.util.UUID; import com.google.common.net.UrlEscapers; public class VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request extends AbstractRequest { @@ -38,7 +37,7 @@ public class VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request ex private final List objects; - private String storageDomainId; + private String storageDomain; private long size = 0; // Constructor @@ -53,16 +52,9 @@ public VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request(final St this.getQueryParams().put("full_details", null); } - public VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request withStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId.toString(); - this.updateQueryParam("storage_domain_id", storageDomainId); - return this; - } - - - public VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request withStorageDomainId(final String storageDomainId) { - this.storageDomainId = storageDomainId; - this.updateQueryParam("storage_domain_id", storageDomainId); + public VerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request withStorageDomain(final String storageDomain) { + this.storageDomain = storageDomain; + this.updateQueryParam("storage_domain", storageDomain); return this; } @@ -108,8 +100,8 @@ public List getObjects() { } - public String getStorageDomainId() { - return this.storageDomainId; + public String getStorageDomain() { + return this.storageDomain; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ActiveJob.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ActiveJob.java index de63306c6..9179c432f 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ActiveJob.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ActiveJob.java @@ -79,6 +79,9 @@ public class ActiveJob { @JsonProperty("RequestType") private JobRequestType requestType; + @JsonProperty("Restore") + private JobRestore restore; + @JsonProperty("Truncated") private boolean truncated; @@ -260,6 +263,15 @@ public void setRequestType(final JobRequestType requestType) { } + public JobRestore getRestore() { + return this.restore; + } + + public void setRestore(final JobRestore restore) { + this.restore = restore; + } + + public boolean getTruncated() { return this.truncated; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Contents.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Contents.java index 9f5f97dd4..217d6dffb 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Contents.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Contents.java @@ -18,7 +18,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import java.lang.Boolean; import java.util.Date; +import java.util.UUID; @JacksonXmlRootElement(namespace = "Data") public class Contents { @@ -27,6 +29,9 @@ public class Contents { @JsonProperty("ETag") private String eTag; + @JsonProperty("IsLatest") + private Boolean isLatest; + @JsonProperty("Key") private String key; @@ -42,6 +47,9 @@ public class Contents { @JsonProperty("StorageClass") private String storageClass; + @JsonProperty("VersionId") + private UUID versionId; + // Constructor public Contents() { //pass @@ -58,6 +66,15 @@ public void setETag(final String eTag) { } + public Boolean getIsLatest() { + return this.isLatest; + } + + public void setIsLatest(final Boolean isLatest) { + this.isLatest = isLatest; + } + + public String getKey() { return this.key; } @@ -102,4 +119,13 @@ public void setStorageClass(final String storageClass) { this.storageClass = storageClass; } + + public UUID getVersionId() { + return this.versionId; + } + + public void setVersionId(final UUID versionId) { + this.versionId = versionId; + } + } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPathBackend.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPathBackend.java index b5e9cbba1..94a5ba2f3 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPathBackend.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPathBackend.java @@ -40,9 +40,6 @@ public class DataPathBackend { @JsonProperty("CacheAvailableRetryAfterInSeconds") private int cacheAvailableRetryAfterInSeconds; - @JsonProperty("DefaultImportConflictResolutionMode") - private ImportConflictResolutionMode defaultImportConflictResolutionMode; - @JsonProperty("DefaultVerifyDataAfterImport") private Priority defaultVerifyDataAfterImport; @@ -55,6 +52,9 @@ public class DataPathBackend { @JsonProperty("InstanceId") private UUID instanceId; + @JsonProperty("IomEnabled") + private boolean iomEnabled; + @JsonProperty("LastHeartbeat") private Date lastHeartbeat; @@ -122,15 +122,6 @@ public void setCacheAvailableRetryAfterInSeconds(final int cacheAvailableRetryAf } - public ImportConflictResolutionMode getDefaultImportConflictResolutionMode() { - return this.defaultImportConflictResolutionMode; - } - - public void setDefaultImportConflictResolutionMode(final ImportConflictResolutionMode defaultImportConflictResolutionMode) { - this.defaultImportConflictResolutionMode = defaultImportConflictResolutionMode; - } - - public Priority getDefaultVerifyDataAfterImport() { return this.defaultVerifyDataAfterImport; } @@ -167,6 +158,15 @@ public void setInstanceId(final UUID instanceId) { } + public boolean getIomEnabled() { + return this.iomEnabled; + } + + public void setIomEnabled(final boolean iomEnabled) { + this.iomEnabled = iomEnabled; + } + + public Date getLastHeartbeat() { return this.lastHeartbeat; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java index 3e7ad9e22..255436d8d 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java @@ -67,6 +67,9 @@ public class DataPolicy { @JsonProperty("LtfsObjectNamingAllowed") private boolean ltfsObjectNamingAllowed; + @JsonProperty("MaxVersionsToKeep") + private int maxVersionsToKeep; + @JsonProperty("Name") private String name; @@ -209,6 +212,15 @@ public void setLtfsObjectNamingAllowed(final boolean ltfsObjectNamingAllowed) { } + public int getMaxVersionsToKeep() { + return this.maxVersionsToKeep; + } + + public void setMaxVersionsToKeep(final int maxVersionsToKeep) { + this.maxVersionsToKeep = maxVersionsToKeep; + } + + public String getName() { return this.name; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java index 8008ca4f3..b54a5e473 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java @@ -27,6 +27,9 @@ public class DetailedTapePartition { // Variables + @JsonProperty("AutoCompactionEnabled") + private boolean autoCompactionEnabled; + @JsonProperty("DriveType") private TapeDriveType driveType; @@ -78,6 +81,15 @@ public DetailedTapePartition() { // Getters and Setters + public boolean getAutoCompactionEnabled() { + return this.autoCompactionEnabled; + } + + public void setAutoCompactionEnabled(final boolean autoCompactionEnabled) { + this.autoCompactionEnabled = autoCompactionEnabled; + } + + public TapeDriveType getDriveType() { return this.driveType; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ImportConflictResolutionMode.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/JobRestore.java similarity index 89% rename from ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ImportConflictResolutionMode.java rename to ds3-sdk/src/main/java/com/spectralogic/ds3client/models/JobRestore.java index bcd4bc4db..e15314c85 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ImportConflictResolutionMode.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/JobRestore.java @@ -16,8 +16,8 @@ // This code is auto-generated, do not modify package com.spectralogic.ds3client.models; -public enum ImportConflictResolutionMode { - CANCEL, - ACCEPT_MOST_RECENT, - ACCEPT_EXISTING +public enum JobRestore { + NO, + YES, + PERMANENT_ONLY } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ListBucketResult.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ListBucketResult.java index 96b1bf0d6..ae82147f2 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ListBucketResult.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/ListBucketResult.java @@ -60,6 +60,10 @@ public class ListBucketResult { @JsonProperty("IsTruncated") private boolean truncated; + @JsonProperty("Version") + @JacksonXmlElementWrapper(useWrapping = false) + private List versionedObjects = new ArrayList<>(); + // Constructor public ListBucketResult() { //pass @@ -156,4 +160,13 @@ public void setTruncated(final boolean truncated) { this.truncated = truncated; } + + public List getVersionedObjects() { + return this.versionedObjects; + } + + public void setVersionedObjects(final List versionedObjects) { + this.versionedObjects = versionedObjects; + } + } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java index 3a683063e..757d401f0 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java @@ -27,6 +27,9 @@ public class NamedDetailedTapePartition { // Variables + @JsonProperty("AutoCompactionEnabled") + private boolean autoCompactionEnabled; + @JsonProperty("DriveType") private TapeDriveType driveType; @@ -78,6 +81,15 @@ public NamedDetailedTapePartition() { // Getters and Setters + public boolean getAutoCompactionEnabled() { + return this.autoCompactionEnabled; + } + + public void setAutoCompactionEnabled(final boolean autoCompactionEnabled) { + this.autoCompactionEnabled = autoCompactionEnabled; + } + + public TapeDriveType getDriveType() { return this.driveType; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Pool.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Pool.java index 00581f1b8..86e19b17c 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Pool.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Pool.java @@ -73,8 +73,8 @@ public class Pool { @JsonProperty("State") private PoolState state; - @JsonProperty("StorageDomainId") - private UUID storageDomainId; + @JsonProperty("StorageDomainMemberId") + private UUID storageDomainMemberId; @JsonProperty("TotalCapacity") private long totalCapacity; @@ -236,12 +236,12 @@ public void setState(final PoolState state) { } - public UUID getStorageDomainId() { - return this.storageDomainId; + public UUID getStorageDomainMemberId() { + return this.storageDomainMemberId; } - public void setStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId; + public void setStorageDomainMemberId(final UUID storageDomainMemberId) { + this.storageDomainMemberId = storageDomainMemberId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/RestOperationType.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/RestOperationType.java index 9f951979b..0babc6ea6 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/RestOperationType.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/RestOperationType.java @@ -36,6 +36,7 @@ public enum RestOperationType { REGENERATE_SECRET_KEY, START_BULK_GET, START_BULK_PUT, + START_BULK_STAGE, START_BULK_VERIFY, VERIFY, VERIFY_SAFE_TO_START_BULK_PUT, diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SpectraUser.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SpectraUser.java index 9dd159b0c..5b47f2592 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SpectraUser.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SpectraUser.java @@ -33,6 +33,9 @@ public class SpectraUser { @JsonProperty("Id") private UUID id; + @JsonProperty("MaxBuckets") + private int maxBuckets; + @JsonProperty("Name") private String name; @@ -73,6 +76,15 @@ public void setId(final UUID id) { } + public int getMaxBuckets() { + return this.maxBuckets; + } + + public void setMaxBuckets(final int maxBuckets) { + this.maxBuckets = maxBuckets; + } + + public String getName() { return this.name; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/StorageDomainMember.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/StorageDomainMember.java index 971f592c7..5722fdca6 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/StorageDomainMember.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/StorageDomainMember.java @@ -24,6 +24,9 @@ public class StorageDomainMember { // Variables + @JsonProperty("AutoCompactionThreshold") + private Integer autoCompactionThreshold; + @JsonProperty("Id") private UUID id; @@ -52,6 +55,15 @@ public StorageDomainMember() { // Getters and Setters + public Integer getAutoCompactionThreshold() { + return this.autoCompactionThreshold; + } + + public void setAutoCompactionThreshold(final Integer autoCompactionThreshold) { + this.autoCompactionThreshold = autoCompactionThreshold; + } + + public UUID getId() { return this.id; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java index 4a304e644..6e9c5c18b 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java @@ -40,6 +40,9 @@ public class SuspectBlobPool { @JsonProperty("LastAccessed") private Date lastAccessed; + @JsonProperty("ObsoletionId") + private UUID obsoletionId; + @JsonProperty("PoolId") private UUID poolId; @@ -95,6 +98,15 @@ public void setLastAccessed(final Date lastAccessed) { } + public UUID getObsoletionId() { + return this.obsoletionId; + } + + public void setObsoletionId(final UUID obsoletionId) { + this.obsoletionId = obsoletionId; + } + + public UUID getPoolId() { return this.poolId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java index 1f628d2ba..8d162caec 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java @@ -30,6 +30,9 @@ public class SuspectBlobTape { @JsonProperty("Id") private UUID id; + @JsonProperty("ObsoletionId") + private UUID obsoletionId; + @JsonProperty("OrderIndex") private int orderIndex; @@ -61,6 +64,15 @@ public void setId(final UUID id) { } + public UUID getObsoletionId() { + return this.obsoletionId; + } + + public void setObsoletionId(final UUID obsoletionId) { + this.obsoletionId = obsoletionId; + } + + public int getOrderIndex() { return this.orderIndex; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Tape.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Tape.java index 4b6a50990..938b4ad5c 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Tape.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/Tape.java @@ -85,8 +85,8 @@ public class Tape { @JsonProperty("State") private TapeState state; - @JsonProperty("StorageDomainId") - private UUID storageDomainId; + @JsonProperty("StorageDomainMemberId") + private UUID storageDomainMemberId; @JsonProperty("TakeOwnershipPending") private boolean takeOwnershipPending; @@ -290,12 +290,12 @@ public void setState(final TapeState state) { } - public UUID getStorageDomainId() { - return this.storageDomainId; + public UUID getStorageDomainMemberId() { + return this.storageDomainMemberId; } - public void setStorageDomainId(final UUID storageDomainId) { - this.storageDomainId = storageDomainId; + public void setStorageDomainMemberId(final UUID storageDomainMemberId) { + this.storageDomainMemberId = storageDomainMemberId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java index 52a962cd2..a90f131a4 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java @@ -24,6 +24,9 @@ public class TapePartition { // Variables + @JsonProperty("AutoCompactionEnabled") + private boolean autoCompactionEnabled; + @JsonProperty("DriveType") private TapeDriveType driveType; @@ -67,6 +70,15 @@ public TapePartition() { // Getters and Setters + public boolean getAutoCompactionEnabled() { + return this.autoCompactionEnabled; + } + + public void setAutoCompactionEnabled(final boolean autoCompactionEnabled) { + this.autoCompactionEnabled = autoCompactionEnabled; + } + + public TapeDriveType getDriveType() { return this.driveType; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartitionFailureType.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartitionFailureType.java index be8cdb2dd..5e1203ab7 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartitionFailureType.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartitionFailureType.java @@ -31,5 +31,6 @@ public enum TapePartitionFailureType { TAPE_DRIVE_TYPE_MISMATCH, TAPE_EJECTION_BY_OPERATOR_REQUIRED, TAPE_MEDIA_TYPE_INCOMPATIBLE, - TAPE_REMOVAL_UNEXPECTED + TAPE_REMOVAL_UNEXPECTED, + TAPE_IN_INVALID_PARTITION } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapeState.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapeState.java index d943bd7ab..a6a06f17b 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapeState.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapeState.java @@ -38,6 +38,7 @@ public enum TapeState { CANNOT_FORMAT_DUE_TO_WRITE_PROTECTION, SERIAL_NUMBER_MISMATCH, BAR_CODE_MISSING, + AUTO_COMPACTION_IN_PROGRESS, FORMAT_PENDING, FORMAT_IN_PROGRESS, EJECT_TO_EE_IN_PROGRESS, diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/VersioningLevel.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/VersioningLevel.java index 46ee8e863..05fa2be69 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/VersioningLevel.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/VersioningLevel.java @@ -18,5 +18,6 @@ public enum VersioningLevel { NONE, - KEEP_LATEST + KEEP_LATEST, + KEEP_MULTIPLE_VERSIONS } \ No newline at end of file diff --git a/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java b/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java index 62caa3319..476cc2774 100644 --- a/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java +++ b/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java @@ -1425,7 +1425,7 @@ public void getPhysicalPlacementForObjectsWithFullDetailsTest() throws IOExcepti @Test public void verifyPhysicalPlacementForObjectsTest() throws IOException { - final String responsePayload = "false10000t1false48d30ecb-84f1-4721-9832-7aa165a1dd7776343269-c32a-4cb0-aec4-57a9dccce6eaPENDING_INSPECTIONfalse20000LTO5false"; + final String responsePayload = "false10000t1false48d30ecb-84f1-4721-9832-7aa165a1dd7776343269-c32a-4cb0-aec4-57a9dccce6eaINSPECTION_PENDINGfalse20000LTO5false"; final String bucketName = "BucketName"; final Map queryParams = new HashMap<>(); @@ -1445,7 +1445,7 @@ public void verifyPhysicalPlacementForObjectsTest() throws IOException { @Test public void verifyPhysicalPlacementForObjectsWithFullDetailsTest() throws IOException { - final String responsePayload = "false10000t1false5a7bb215-4aff-4806-b217-5fe01ade6a2c2e5b25fc-546e-45b0-951e-8f3d80bb7823PENDING_INSPECTIONfalse20000LTO5false"; + final String responsePayload = "false10000t1false5a7bb215-4aff-4806-b217-5fe01ade6a2c2e5b25fc-546e-45b0-951e-8f3d80bb7823INSPECTION_PENDINGfalse20000LTO5false"; final String bucketName = "BucketName"; final Map queryParams = new HashMap<>(); From 2f43352a36e0aeb42b5ecadd2fca31fc9bc1b247 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Wed, 21 Feb 2018 14:30:31 -0700 Subject: [PATCH 03/18] Added versions to canonicalized query params and updated unit tests --- .../integration/VersionedObject_Test.java | 23 ++++++++-- .../ds3client/models/bulk/Ds3Object.java | 42 ++++--------------- .../ds3client/utils/Signature.java | 8 +++- .../ds3client/Ds3Client_Test.java | 17 +++++--- .../ds3client/serializer/XmlOutput_Test.java | 12 +----- 5 files changed, 48 insertions(+), 54 deletions(-) diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java index 075c5127a..93fed68cb 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java @@ -16,11 +16,15 @@ package com.spectralogic.ds3client.integration; import com.spectralogic.ds3client.Ds3Client; +import com.spectralogic.ds3client.commands.GetBucketRequest; +import com.spectralogic.ds3client.commands.GetBucketResponse; +import com.spectralogic.ds3client.commands.spectrads3.GetBulkJobSpectraS3Request; import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; import com.spectralogic.ds3client.integration.test.helpers.TempStorageIds; import com.spectralogic.ds3client.integration.test.helpers.TempStorageUtil; import com.spectralogic.ds3client.models.ChecksumType; import com.spectralogic.ds3client.models.VersioningLevel; +import com.spectralogic.ds3client.models.bulk.Ds3Object; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -29,9 +33,13 @@ import java.io.IOException; import java.net.URISyntaxException; +import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import static com.spectralogic.ds3client.integration.Util.*; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; public class VersionedObject_Test { @@ -40,7 +48,6 @@ public class VersionedObject_Test { private static final Ds3Client CLIENT = Util.fromEnv(); private static final Ds3ClientHelpers HELPERS = Ds3ClientHelpers.wrap(CLIENT); private static final String TEST_ENV_NAME = "java_versioned_object_test"; - private static final int RETRIES = 5; private static TempStorageIds envStorageIds; private static UUID envDataPolicyId; @@ -79,10 +86,20 @@ public void getObjectsWithVersioning() throws IOException, URISyntaxException { loadTestBook(CLIENT, BOOKS[0], objectName, TEST_ENV_NAME); // putting beowulf as content loadTestBook(CLIENT, BOOKS[1], objectName, TEST_ENV_NAME); // putting sherlock holmes as content - // TODO Get the version of the objects + // Get the version of the objects + final GetBucketRequest getBucketRequest = new GetBucketRequest(TEST_ENV_NAME).withVersions(true); + final GetBucketResponse getBucketResponse = CLIENT.getBucket(getBucketRequest); - // TODO Create bulk get job with both versions of object specified + assertThat(getBucketResponse.getListBucketResult().getObjects().size(), is(0)); + assertThat(getBucketResponse.getListBucketResult().getVersionedObjects().size(), is(2)); + // Create bulk get job with both versions of object specified + final List objects = getBucketResponse.getListBucketResult().getVersionedObjects().stream() + .map(obj -> new Ds3Object(obj.getKey(), obj.getVersionId())) + .collect(Collectors.toList()); + + final GetBulkJobSpectraS3Request getBulkRequest = new GetBulkJobSpectraS3Request(TEST_ENV_NAME, objects); + CLIENT.getBulkJobSpectraS3(getBulkRequest); } finally { cancelAllJobsForBucket(CLIENT, TEST_ENV_NAME); diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java index 5c1c9f7bc..38e7012e1 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java @@ -41,30 +41,6 @@ public Ds3Object() { //This constructor is used just for serialization. } - /** - * Use this constructor when getting a version of a file from DS3. - * @param name The name of the object to get from DS3 - * @param size The size of the object to get from DS3 - * @param versionId The version ID of the object to get from DS3 - */ - public Ds3Object(final String name, final long size, final UUID versionId) { - this.name = name; - this.size = size; - this.versionId = versionId.toString(); - } - - /** - * Use this constructor when getting a version of a file from DS3. - * @param name The name of the object to get from DS3 - * @param size The size of the object to get from DS3 - * @param versionId The version ID of the object to get from DS3 - */ - public Ds3Object(final String name, final long size, final String versionId) { - this.name = name; - this.size = size; - this.versionId = versionId; - } - /** * Use this constructor when putting files to DS3. * @param name The name of the object that will be put to DS3 @@ -124,6 +100,14 @@ public void setSize(final long size) { this.size = size; } + public String getVersionId() { + return versionId; + } + + public void setVersionId(String versionId) { + this.versionId = versionId; + } + @Override public String toString() { return this.name + ":" + this.size; @@ -131,7 +115,7 @@ public String toString() { @Override public int hashCode() { - return java.util.Objects.hash(this.name, this.size); + return java.util.Objects.hash(this.name, this.size, this.versionId); } @Override @@ -144,12 +128,4 @@ public boolean equals(final Object obj) { ds3Obj.getSize() == this.getSize() && ds3Obj.getVersionId().equals(this.getVersionId()); } - - public String getVersionId() { - return versionId; - } - - public void setVersionId(String versionId) { - this.versionId = versionId; - } } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/utils/Signature.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/utils/Signature.java index 89b24e39c..cf5f84a9d 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/utils/Signature.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/utils/Signature.java @@ -91,14 +91,18 @@ public static String canonicalizeResource(final String path, final Map queryParams = new HashMap<>(); @@ -1445,7 +1445,7 @@ public void verifyPhysicalPlacementForObjectsTest() throws IOException { @Test public void verifyPhysicalPlacementForObjectsWithFullDetailsTest() throws IOException { - final String responsePayload = "false10000t1false5a7bb215-4aff-4806-b217-5fe01ade6a2c2e5b25fc-546e-45b0-951e-8f3d80bb7823INSPECTION_PENDINGfalse20000LTO5false"; + final String responsePayload = "false10000t1false5a7bb215-4aff-4806-b217-5fe01ade6a2c2e5b25fc-546e-45b0-951e-8f3d80bb7823PENDING_INSPECTIONfalse20000LTO5false"; final String bucketName = "BucketName"; final Map queryParams = new HashMap<>(); @@ -1470,7 +1470,7 @@ public void ejectStorageDomainBlobsTest() throws IOException { queryParams.put("operation", "eject"); queryParams.put("blobs", null); queryParams.put("bucket_id", bucketId); - queryParams.put("storage_domain_id", storageDomainId); + queryParams.put("storage_domain", storageDomainId); MockNetwork .expecting(HttpVerb.PUT, "/_rest_/tape", queryParams, SIMPLE_OBJECT_REQUEST_PAYLOAD) @@ -1535,11 +1535,18 @@ public void getBlobsOnTapeTest() throws IOException { final Map queryParams = new HashMap<>(); queryParams.put("operation", "get_physical_placement"); - MockNetwork + final Map responseHeaders = new HashMap<>(); + responseHeaders.put("page-truncated", "0"); + responseHeaders.put("total-result-count", "2"); + + final GetBlobsOnTapeSpectraS3Response result = MockNetwork .expecting(HttpVerb.GET, "/_rest_/tape/" + target, queryParams, null) - .returning(200, SIMPLE_BULK_OBJECT_LIST_RESPONSE) + .returning(200, SIMPLE_BULK_OBJECT_LIST_RESPONSE, responseHeaders) .asClient() .getBlobsOnTapeSpectraS3(new GetBlobsOnTapeSpectraS3Request(target)); + + assertThat(result.getPagingTruncated(), is(0)); + assertThat(result.getPagingTotalResultCount(), is(2)); } @Test diff --git a/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java b/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java index f6776882c..5e360d3df 100644 --- a/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java +++ b/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java @@ -92,20 +92,10 @@ public void toXmlWithNoSize() { assertThat(result, is(expectedString)); } - @Test - public void toXmlWithNoVersionId() { - final String expectedString = ""; - final List objectList = ImmutableList.of(new Ds3Object("file1", 12, "version1"), new Ds3Object("file2", 5022, "version2")).asList(); - final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); - final String result = XmlOutput.toXml(ds3ObjectList, true); - - assertThat(result, is(expectedString)); - } - @Test public void toXmlWithVersionId() { final String expectedString = ""; - final List objectList = ImmutableList.of(new Ds3Object("file1", 12, "version1"), new Ds3Object("file2", 5022, "version2")).asList(); + final List objectList = ImmutableList.of(new Ds3Object("file1", "version1"), new Ds3Object("file2", "version2")).asList(); final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); final String result = XmlOutput.toXml(ds3ObjectList, false); From a01640296bb4112a9d44294744136709e26da49f Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Wed, 21 Feb 2018 16:47:40 -0700 Subject: [PATCH 04/18] Fixed stage objects job command --- .../integration/VersionedObject_Test.java | 32 +++++++++++++++++++ ...tageObjectsJobSpectraS3ResponseParser.java | 15 ++++++++- .../StageObjectsJobSpectraS3Request.java | 23 ++++++------- .../StageObjectsJobSpectraS3Response.java | 8 +++-- 4 files changed, 60 insertions(+), 18 deletions(-) diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java index 93fed68cb..e15c4ac85 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java @@ -18,7 +18,9 @@ import com.spectralogic.ds3client.Ds3Client; import com.spectralogic.ds3client.commands.GetBucketRequest; import com.spectralogic.ds3client.commands.GetBucketResponse; +import com.spectralogic.ds3client.commands.spectrads3.DeleteBucketSpectraS3Request; import com.spectralogic.ds3client.commands.spectrads3.GetBulkJobSpectraS3Request; +import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Request; import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; import com.spectralogic.ds3client.integration.test.helpers.TempStorageIds; import com.spectralogic.ds3client.integration.test.helpers.TempStorageUtil; @@ -106,4 +108,34 @@ public void getObjectsWithVersioning() throws IOException, URISyntaxException { deleteAllContents(CLIENT, TEST_ENV_NAME); } } + + @Test + public void stageObjectsWithVersioning() throws IOException, URISyntaxException { + try { + HELPERS.ensureBucketExists(TEST_ENV_NAME, envDataPolicyId); + final String objectName = "object_with_versions"; + + // Put different content for object twice + loadTestBook(CLIENT, BOOKS[0], objectName, TEST_ENV_NAME); // putting beowulf as content + loadTestBook(CLIENT, BOOKS[1], objectName, TEST_ENV_NAME); // putting sherlock holmes as content + + // Get the version of the objects + final GetBucketRequest getBucketRequest = new GetBucketRequest(TEST_ENV_NAME).withVersions(true); + final GetBucketResponse getBucketResponse = CLIENT.getBucket(getBucketRequest); + + assertThat(getBucketResponse.getListBucketResult().getObjects().size(), is(0)); + assertThat(getBucketResponse.getListBucketResult().getVersionedObjects().size(), is(2)); + + // Create bulk get job with both versions of object specified + final List objects = getBucketResponse.getListBucketResult().getVersionedObjects().stream() + .map(obj -> new Ds3Object(obj.getKey(), obj.getVersionId())) + .collect(Collectors.toList()); + + final StageObjectsJobSpectraS3Request stageRequest = new StageObjectsJobSpectraS3Request(TEST_ENV_NAME, objects); + CLIENT.stageObjectsJobSpectraS3(stageRequest); + + } finally { + CLIENT.deleteBucketSpectraS3(new DeleteBucketSpectraS3Request(TEST_ENV_NAME).withForce(true)); + } + } } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java index afe980dba..609ad9de3 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java @@ -18,18 +18,31 @@ import com.spectralogic.ds3client.commands.parsers.interfaces.AbstractResponseParser; import com.spectralogic.ds3client.commands.parsers.utils.ResponseParserUtils; +import com.spectralogic.ds3client.commands.spectrads3.PutBulkJobSpectraS3Response; import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Response; +import com.spectralogic.ds3client.models.MasterObjectList; import com.spectralogic.ds3client.networking.WebResponse; +import com.spectralogic.ds3client.serializer.XmlOutput; + import java.io.IOException; +import java.io.InputStream; public class StageObjectsJobSpectraS3ResponseParser extends AbstractResponseParser { - private final int[] expectedStatusCodes = new int[]{}; + private final int[] expectedStatusCodes = new int[]{200}; @Override public StageObjectsJobSpectraS3Response parseXmlResponse(final WebResponse response) throws IOException { final int statusCode = response.getStatusCode(); if (ResponseParserUtils.validateStatusCode(statusCode, expectedStatusCodes)) { switch (statusCode) { + case 200: + if (ResponseParserUtils.getSizeFromHeaders(response.getHeaders()) == 0) { + return new StageObjectsJobSpectraS3Response(null, this.getChecksum(), this.getChecksumType()); + } + try (final InputStream inputStream = response.getResponseStream()) { + final MasterObjectList result = XmlOutput.fromXml(inputStream, MasterObjectList.class); + return new StageObjectsJobSpectraS3Response(result, this.getChecksum(), this.getChecksumType()); + } default: assert false: "validateStatusCode should have made it impossible to reach this line"; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java index 8ba4125bc..62d5f5adc 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java @@ -16,16 +16,15 @@ // This code is auto-generated, do not modify package com.spectralogic.ds3client.commands.spectrads3; -import com.spectralogic.ds3client.networking.HttpVerb; -import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.google.common.net.UrlEscapers; +import com.spectralogic.ds3client.BulkCommand; +import com.spectralogic.ds3client.commands.interfaces.BulkRequest; import com.spectralogic.ds3client.models.Priority; +import com.spectralogic.ds3client.models.bulk.Ds3Object; +import com.spectralogic.ds3client.networking.HttpVerb; -public class StageObjectsJobSpectraS3Request extends AbstractRequest { +public class StageObjectsJobSpectraS3Request extends BulkRequest { // Variables - - private final String bucketName; private String name; @@ -34,8 +33,8 @@ public class StageObjectsJobSpectraS3Request extends AbstractRequest { // Constructor - public StageObjectsJobSpectraS3Request(final String bucketName) { - this.bucketName = bucketName; + public StageObjectsJobSpectraS3Request(final String bucketName, final Iterable objects) { + super(bucketName, objects); this.getQueryParams().put("operation", "start_bulk_stage"); @@ -62,12 +61,8 @@ public HttpVerb getVerb() { } @Override - public String getPath() { - return "/_rest_/bucket/" + this.bucketName; - } - - public String getBucketName() { - return this.bucketName; + public BulkCommand getCommand() { + return BulkCommand.GET; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java index 7f7143462..1eb1b3e47 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java @@ -16,13 +16,15 @@ // This code is auto-generated, do not modify package com.spectralogic.ds3client.commands.spectrads3; +import com.spectralogic.ds3client.commands.interfaces.BulkResponse; import com.spectralogic.ds3client.models.ChecksumType; import com.spectralogic.ds3client.commands.interfaces.AbstractResponse; +import com.spectralogic.ds3client.models.MasterObjectList; -public class StageObjectsJobSpectraS3Response extends AbstractResponse { +public class StageObjectsJobSpectraS3Response extends BulkResponse { - public StageObjectsJobSpectraS3Response(final String checksum, final ChecksumType.Type checksumType) { - super(checksum, checksumType); + public StageObjectsJobSpectraS3Response(final MasterObjectList masterObjectListResult, final String checksum, final ChecksumType.Type checksumType) { + super(masterObjectListResult, checksum, checksumType); } } \ No newline at end of file From 6131765da4a35589adbd57d53471ba93de01120d Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Wed, 21 Feb 2018 16:51:08 -0700 Subject: [PATCH 05/18] code cleanup --- .../java/com/spectralogic/ds3client/integration/Util.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java index 0ed251ec1..d7c22b50a 100644 --- a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java +++ b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java @@ -95,12 +95,7 @@ public static void loadTestBook(final Ds3Client client, final String fileName, f final Ds3ClientHelpers helpers = Ds3ClientHelpers.wrap(client); final Ds3ClientHelpers.Job job = helpers.startWriteJob(bucketName, ImmutableList.of(obj)); - job.transfer(new Ds3ClientHelpers.ObjectChannelBuilder() { - @Override - public SeekableByteChannel buildChannel(final String key) throws IOException { - return FileChannel.open(filePath, StandardOpenOption.READ); - } - }); + job.transfer(key -> FileChannel.open(filePath, StandardOpenOption.READ)); } public static Ds3ClientHelpers.Job getLoadJob(final Ds3Client client, final String bucketName, final String resourceBaseName) throws IOException, URISyntaxException { From 77df8847c0cee43476eaf3256d3ec7f5de19aeff Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Thu, 8 Mar 2018 14:47:43 -0700 Subject: [PATCH 06/18] Updated 5.0 API with old version removed and versionId added --- contract/4_0_0_contract.xml | 17222 --------------- contract/5_0_x_contract.xml | 17648 ++++++++++++++++ .../ds3client/integration/Util.java | 1 - .../com/spectralogic/ds3client/Ds3Client.java | 1 + .../commands/interfaces/BulkRequest.java | 15 +- ...tageObjectsJobSpectraS3ResponseParser.java | 6 +- ...ectStorageDomainBlobsSpectraS3Request.java | 2 +- .../ImportAllPoolsSpectraS3Request.java | 16 +- .../ImportAllTapesSpectraS3Request.java | 16 +- .../ImportPoolSpectraS3Request.java | 16 +- .../ImportTapeSpectraS3Request.java | 16 +- .../StageObjectsJobSpectraS3Request.java | 31 +- .../StageObjectsJobSpectraS3Response.java | 14 +- .../ds3client/helpers/JobState.java | 8 +- .../ds3client/models/BulkObject.java | 16 +- .../ds3client/models/DataPolicy.java | 24 - .../ds3client/models/DetailedS3Object.java | 12 - .../ds3client/models/S3Object.java | 17 +- .../ds3client/models/bulk/Ds3ObjectList.java | 33 - .../ds3client/Ds3Client_Test.java | 12 +- .../ds3client/helpers/Metadata_Test.java | 4 +- .../ds3client/serializer/XmlOutput_Test.java | 11 - 22 files changed, 17696 insertions(+), 17445 deletions(-) delete mode 100644 contract/4_0_0_contract.xml create mode 100644 contract/5_0_x_contract.xml diff --git a/contract/4_0_0_contract.xml b/contract/4_0_0_contract.xml deleted file mode 100644 index 8fd0958f5..000000000 --- a/contract/4_0_0_contract.xml +++ /dev/null @@ -1,17222 +0,0 @@ - - - - - com.spectralogic.s3.common.platform.notification.domain.payload.AzureTargetFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.Ds3TargetFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.GenericDaoNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.JobCompletedNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.JobCreatedNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.JobCreationFailedNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.PoolFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.S3ObjectsCachedNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.S3ObjectsLostNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.S3ObjectsPersistedNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.S3TargetFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.StorageDomainFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.SystemFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.TapeFailureNotificationPayload - - - com.spectralogic.s3.common.platform.notification.domain.payload.TapePartitionFailureNotificationPayload - - - - - - - - - - - - - 204 - - - - - - 1.9D854BF00D3B516D4045D9DBEB4B174A - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 404 - - - - - - 1.A4F544C672FC8C11593427E560385533 - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 409 - - - - - - 1.B17329949B488995473FD573BF5A0507 - - - - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.013CF864155A896718908128F7C31E1E - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 409 - - - - - - 410 - - - - - - 411 - - - - - - 503 - - - - - - 1.5B99BA64EAFD43AEC9359E716A93B234 - - - - - - - - - 204 - - - - - - 403 - - - - - - 404 - - - - - - 409 - - - - - - 1.416E43D944A06C824AD8BF5005FA1DC3 - - - - - - - - - - - 204 - - - - - - 404 - - - - - - 1.46B3A42F88F14FF8E433CEF3CED4C70E - - - - - - - - - - - - - 200 - - - - - - 1.773E50A74C3DC9EB87D6CD924CA1B34A - - - - - - - - - - - - - - 200 - - - - - - 1.3A8DB55ED9BC0A138E7E63E96E6EF55F - - - - - - - - - 200 - - - - - - 1.8D18E6B210A254D12ACD074CF265700F - - - - - - - - - - - - 200 - - - - - - 206 - - - - - - 307 - - - - - - 400 - - - - - - 503 - - - - - - 1.F50E6F8DEFB864FE89D9385A71A6C25A - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 1.5AB983AB4BABA77BCD64173290A741B4 - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.CF182CD57551902A475553F26582BC78 - - - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.871E6F61ED03FE40EECFD0AAD53AAA34 - - - - - - - - - - - - - - 200 - - - - - - 1.12220CAF96D6A1B3E1BC31330E95EA51 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.51D7750881DA0A4621487FFE61533D85 - - - - - - - - - - - - - 201 - - - - - - 403 - - - - - - 1.E368236F01A4B820CB381ABB9DC6A481 - - - - - - - - - - - - - 201 - - - - - - 403 - - - - - - 1.8926D009A5E919B034A8C12CC7BC6AA4 - - - - - - - - - - - - 201 - - - - - - 1.AB6BB38915AC1B434AA79A746AEC1CA9 - - - - - - - - - - - - 201 - - - - - - 1.090A514BE0B269138CD466668F79C773 - - - - - - - - - - - - 201 - - - - - - 1.1AF4C0F11AB88FCD30536164F07B3944 - - - - - - - - - - - - 201 - - - - - - 1.878704403C5B1CFAD98804ABD56AB840 - - - - - - - - - - - 201 - - - - - - 1.09B5FAE5CF69BF5E945E124D60852125 - - - - - - - - - - - 201 - - - - - - 1.D65ECD1D08D1272AD5E969F80235DFAC - - - - - - - - - 204 - - - - - - 403 - - - - - - 1.0500995E51CDDBCFFC70327F12F2428F - - - - - - - - - 204 - - - - - - 1.C6B44D720B8BC5FEC46CEDA4EA04CA5F - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.CE89262FB9070D85EAB1C361CB74D99D - - - - - - - - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.D561CC0BB1BDF0FCD73E2AC1509393F7 - - - - - - - - - 200 - - - - - - 1.14A107B85D096EB8554EDB0A4A8589B9 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.8A4F25C489C1E3C970CAD13B9AD4754E - - - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 403 - - - - - - 409 - - - - - - 1.4751D97F3546F963C451CE9F9AE16C76 - - - - - - - - - - - 204 - - - - - - 403 - - - - - - 404 - - - - - - 409 - - - - - - 1.7E0B95E1E222BB82689E2AA8CD3FE344 - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.4FAD1C67C3247080EFA33C224B87544D - - - - - - - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.8C885A22F5F8EA044A104A020AE563D5 - - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 1.0EB0673D4EFC79596617FFE680876C1F - - - - - - - - - - - 204 - - - - - - 1.E697E63D8C13C0C06626E57BB95305CD - - - - - - - - - 200 - - - - - - 1.90CDE2CBD14856E5FDA2474704819E6B - - - - - - - - - - - - - - - 200 - - - - - - 1.581382F387E3FC77A09A11F14FEB312D - - - - - - - - - 200 - - - - - - 1.4E2A47F1477F1A5E5D4BA9166FD13700 - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 404 - - - - - - 409 - - - - - - 1.8D11714D318A13D76782B5A71471D887 - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.00FF753915ABC8F954677D57253B3230 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.002A078CDCBEB6844EA00B0BBAC7CAC8 - - - - - - - - - - - - - - - 200 - - - - - - 1.B27EA3CC583291FFD676193DBAA4551C - - - - - - - - - 200 - - - - - - 1.8E0A2BF92DD79E7C634778C97619CDEF - - - - - - - - - - - 200 - - - - - - 1.1789113D83DC2E48D1B5D1C221DC1872 - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 409 - - - - - - 1.C554C793C965F9B60414FF9092DD6907 - - - - - - - - - - - - - - - - 201 - - - - - - 1.15D63B0FD0C4257041795BA2235277C5 - - - - - - - - - - - - - - - - 201 - - - - - - 409 - - - - - - 1.A1CF121219F77829C8480AC814898D87 - - - - - - - - - - - - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 1.74C5BC1D5C856DAC66A4AC9893FC4BB9 - - - - - - - - - - - - - - - - 201 - - - - - - 1.B6E603A64C60859EEA83B2E687FB55AB - - - - - - - - - - - - - - - - - 201 - - - - - - 1.CC4C9ED25B1509ABD0F30B375ABA4D78 - - - - - - - - - 204 - - - - - - 1.377DC47D5802F8BBB59CC5D011268847 - - - - - - - - - 204 - - - - - - 1.E3B3238A4639A19B8507203907EA2D52 - - - - - - - - - 204 - - - - - - 1.5C597451975C08FCCE2F0647EDD16872 - - - - - - - - - 204 - - - - - - 1.D032BD8264B23E052A900CD171273D84 - - - - - - - - - 204 - - - - - - 1.779978550E2AC7519DBEE1B6418D7FA1 - - - - - - - - - 200 - - - - - - 1.BD89C8ADCBAC5C96569ABC8DE7D841D9 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.760344CC17CCA3AAC0D1AEAAB22664BE - - - - - - - - - 200 - - - - - - 1.7FE0018AE76D9D24DADF93BC83A73EF2 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.9A7A0BABDD6E7CC2D134B62D158E6C57 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.8C6D05D23CDCAFBC0344FE0C91513C32 - - - - - - - - - 200 - - - - - - 1.40C486BA0D58B76E2C253E81EB297D0E - - - - - - - - - 200 - - - - - - 1.18B2E9524D43E524BBB9C54ECA35E5F3 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.87B1B5789ECD05E15FC0C8BFED48E73E - - - - - - - - - 200 - - - - - - 1.B23CBBE34EDFFE1E8FBF444E4E0EA0ED - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.F85D09C772C76D466ECDE210ABD0F6E2 - - - - - - - - - - - - - 200 - - - - - - 1.D90C5C1EF5D3968AE776DED4DD4B41CA - - - - - - - - - - - - - 200 - - - - - - 409 - - - - - - 1.4C6316BC92D7D1285A6565E212E6999E - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 500 - - - - - - 1.BA76BEF97888F20DAAB5ABAF89492E6F - - - - - - - - - - - - - 200 - - - - - - 1.B024C098E863E2B1C9275B0EBFBA3BF6 - - - - - - - - - - - - - - 200 - - - - - - 1.E7A5FD996704C81CD95CC171BA42549E - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 409 - - - - - - 1.F51C99474F629A2CFD5CDB6BC5CB7C6D - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 409 - - - - - - 1.FB9358D923F09B224C1272BD9B459121 - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 409 - - - - - - 1.B030FA7F19336B7B8C64BAF6E6F6346B - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 409 - - - - - - 1.FCF1BFADC9D4DE1CF114901B69B22280 - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 409 - - - - - - 1.3970B4F7B6EEDF3D16C14B1FE8D74EA5 - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.FCDDCC0EE93BE92A31D4BD84C9DD57C7 - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.39020D24E8F55C01FF5ECC4524C78189 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.823E96C86A899E615759E3AADB7355E0 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.C8788BC1989E0E16F93945C2F157893B - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.0D4C916F64F122E94EEB6674D7B9F4D1 - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.620EF529E4CD2E0912AE9F42E2B802C0 - - - - - - - - - - - - - - - - 200 - - - - - - 1.2F15899DE5E70055E0490AD29530C842 - - - - - - - - - - - - - - - - 200 - - - - - - 1.DE22EC0929BAB9F743BFC38EAB10D680 - - - - - - - - - - - - - - - - 200 - - - - - - 1.905EEF6FC284DC0AC05F8F1B347829C0 - - - - - - - - - - - - - - - - 200 - - - - - - 1.BEECB5756E585359144D71D4410D4846 - - - - - - - - - - - - - - - - 200 - - - - - - 1.B8E477B5613F3E518F79082D5552E7AC - - - - - - - - - - - - - - - - - 200 - - - - - - 1.1480092553E000D0103C80E1BC65B2C5 - - - - - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.B32DA5E8C42BDE53830D288C86582A9B - - - - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.8FB599E4270D6BDE67B81DDEAACACAC8 - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 1.1B32364BA03FED4EBBD9BEF15A49EFB1 - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 1.F1B9C4424263D106712B36B7809F8EFC - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 1.782935F97E84EF7CAABC357C5CEE2271 - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 1.F4A8A78DF6670ECDAB83A83A18D1547D - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 1.2C0E9739F7F0BF5B9C16B620D3C195EB - - - - - - - - - - - - 201 - - - - - - 403 - - - - - - 409 - - - - - - 1.8611905E16872C3EEFC979239C47CFFE - - - - - - - - - - - 201 - - - - - - 1.D6C48865C0991834DDDE193AB40E04EA - - - - - - - - - - - - 201 - - - - - - 403 - - - - - - 1.5A1DF310850382BEEFC771A9C1DECC3D - - - - - - - - - 204 - - - - - - 403 - - - - - - 1.33DEA650BE9ABCDCDF53E462D402DAFE - - - - - - - - - 204 - - - - - - 403 - - - - - - 1.E434ED8B2A34F104A95442717B1A4BA7 - - - - - - - - - 200 - - - - - - 1.25BA53F39517497CBFEC02F6F1A1281D - - - - - - - - - - - - - - - - - 200 - - - - - - 1.02D9D53D22A0F5B6893643EE40ADB324 - - - - - - - - - 200 - - - - - - 1.ABED6B8929079AC01A596C9E4C08CBF8 - - - - - - - - - - - - - - - - 200 - - - - - - 1.CA6D598467AAD4083472C11E72F28A8A - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 1.03E8ABF4920FE0C59B424EEDB8001FAB - - - - - - - - - - - - - 200 - - - - - - 204 - - - - - - 403 - - - - - - 1.3289F9FD0E9ACCD50787DB1A0055712D - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 404 - - - - - - 1.4DB23DDC56235578526ECD74A1E1D151 - - - - - - - - - - - 204 - - - - - - 1.278BB8E0110D66EDACF595107C09427A - - - - - - - - - - - - - - 204 - - - - - - 1.5787086FAAD0AEFD6965BE9007AEF32F - - - - - - - - - - - - - - 204 - - - - - - 1.F66A4CBE1684496D395E5546FEB8C8B8 - - - - - - - - - - - 204 - - - - - - 1.EDC1DDE6748591464113649924079D39 - - - - - - - - - 204 - - - - - - 1.5A6D3D3A60E77AC626275AF623C4C766 - - - - - - - - - 204 - - - - - - 1.C079F9483A04E55B04DBB93A82435427 - - - - - - - - - - - 200 - - - - - - 1.1212DC6708EBC50394B744582FAA65B4 - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 404 - - - - - - 500 - - - - - - 12.7853EE12A10929010211D370E4E9FCB8 - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 13.33017D3F34393D367E5E63FB7F1DEB3E - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 404 - - - - - - 1.1AA08A21610BD902ED2A0BFDBB145B9C - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 1.5F29580D0FA9D13D4F31F6FA1479253C - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.BE9B123D699A33A084C657EDA216FD46 - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 1.366B50C862A74986AFC2A1FD9AFA0DC8 - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.2CB8F6FD0FD4AAB2DBFDA3B66906F811 - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 1.82806C1E451AD1325DD45123292E6360 - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.AF1AD1BB3EE186EBC9E967F37EF47B63 - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.81935DED0B11C2F6579420B1D503F846 - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.96AA26481EDB1492BF1A4696FB4A5E90 - - - - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 409 - - - - - - 410 - - - - - - 12.E85F3447509D8658DC4747BDBC1124AE - - - - - - - - - 200 - - - - - - 12.D2E1E5F53C787AAE87CD6C64E57DF392 - - - - - - - - - - - 200 - - - - - - 1.5441D6DB77E32465283AFFCD70BF0BD9 - - - - - - - - - - - - 200 - - - - - - 1.A91ACBDE9427D4617DBA938B01FD4A65 - - - - - - - - - - - - - 200 - - - - - - 1.46852EDC36DDDB68792432241EBAB228 - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 1.8DD6A5CAEBA22CCE74B380322FB5EDD6 - - - - - - - - - - - - - - 200 - - - - - - 204 - - - - - - 1.6F544A6CED02468AF923384632138561 - - - - - - - - - 204 - - - - - - 1.A1093E63522E0D37459A3DD2ED4BA382 - - - - - - - - - - - - 204 - - - - - - 1.381372DCEE1323BA3EC6135F28BD40E7 - - - - - - - - - - - - 204 - - - - - - 411 - - - - - - 1.B66BD19B24CA38C77915186CAC7278FB - - - - - - - - - 204 - - - - - - 403 - - - - - - 1.61F4F2C6BB6C6B6682D36487830BB9DC - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 402 - - - - - - 1.5A3E7F31249938D514C56E364FC6D02F - - - - - - - - - 200 - - - - - - 1.6DAEDCFBF2E71F76371CDB2DE03FB216 - - - - - - - - - - - - - - 200 - - - - - - 1.4EB20E46D4C9A9D1A9C832A10416B269 - - - - - - - - - - - - 200 - - - - - - 1.D6574E9F317A632E897CC1497A014EE7 - - - - - - - - - - - - - - - 201 - - - - - - 1.2963DE5A15B7A94AE018A555B04855E3 - - - - - - - - - - - - - - - 201 - - - - - - 1.BA2D594EAC2171E3CD66A1E4B261C157 - - - - - - - - - - - - - - - - 201 - - - - - - 403 - - - - - - 1.F6F99FB1D96FAAB52761A4A6F9C007F4 - - - - - - - - - - - - - - - 201 - - - - - - 1.4493BC861FFB54D0474875CDA923917F - - - - - - - - - - - - - - - 201 - - - - - - 1.BCDE69D118A54DB3850A7A1DCB9044A5 - - - - - - - - - - - - - - - - 201 - - - - - - 1.B9B14FD95B7365854A4873C9E03CF714 - - - - - - - - - - - - - - - 201 - - - - - - 1.CB59926ABCCE409B8DA620D7098051EF - - - - - - - - - - - - - - - - 201 - - - - - - 1.8A412C738BCEA2E768EEE5AFA91A02E3 - - - - - - - - - - - - - - - 201 - - - - - - 1.F58DEB2156F89FEFF73AA296FB996076 - - - - - - - - - - - - - - - 201 - - - - - - 1.6D9C05CCD6FC973CEC7EC06B2852C004 - - - - - - - - - - - - - - - 201 - - - - - - 1.D2F89CEFD1D076C722E383CD47F54B0E - - - - - - - - - - - - - - - 201 - - - - - - 1.C3E90840E58C0ED58DE5285F1C629007 - - - - - - - - - - - - - - - 201 - - - - - - 1.697EEA5D819D1CCED8356F3707A80CC0 - - - - - - - - - - - - - - - 201 - - - - - - 1.F8EE6F2C578B71C30A5818323B8C63DD - - - - - - - - - 204 - - - - - - 1.CEC966DCE333C324697D8D2C014D5844 - - - - - - - - - 204 - - - - - - 1.F75FB6B03E5778971F18B3E156F1C368 - - - - - - - - - 204 - - - - - - 1.FB37D5236F8B9FAA3C23E1E1ED75EF7B - - - - - - - - - 204 - - - - - - 1.BF2D067D7C365D5CD381837F5376FBCC - - - - - - - - - 204 - - - - - - 1.1DCB7A5A19D0073AB4C529DE68EFF590 - - - - - - - - - 204 - - - - - - 404 - - - - - - 1.AE62860962CCA944FDE6BA7A1FA29BE8 - - - - - - - - - 204 - - - - - - 1.74228C20E21299810A61BDC1D72981CB - - - - - - - - - 204 - - - - - - 1.5A5F6DB8F16E8BA2850BBC9786BF933A - - - - - - - - - 204 - - - - - - 1.9B0188827522EB7EEF626D5957F16EF7 - - - - - - - - - 204 - - - - - - 1.057E27FF0C7515839363635ABD87011B - - - - - - - - - 204 - - - - - - 1.815B2098111720A02816432FD0B11263 - - - - - - - - - 204 - - - - - - 1.F17A1AE113B6FD07741496A307004005 - - - - - - - - - 204 - - - - - - 1.3FD065CF09A9346481021BC207729FC8 - - - - - - - - - 204 - - - - - - 403 - - - - - - 1.67E8651E0A9719E5AA68ED2783076E40 - - - - - - - - - 200 - - - - - - 1.E7E2388B6F0182AA8B191836FDC2EF46 - - - - - - - - - - - - - - - 200 - - - - - - 1.0B3D7131A8DE08F23DD8F92E4FB445CE - - - - - - - - - 200 - - - - - - 1.E016A3B10B9E2BCFBDC052B607BEF218 - - - - - - - - - - - - - - - 200 - - - - - - 1.405BE0983E37E87E48E0D549DFFD22CD - - - - - - - - - 200 - - - - - - 1.D55B0B0605B4BF3AE32149CAD90110CE - - - - - - - - - - - - - - - 200 - - - - - - 1.89699929828B8EC5AE4F1F41003A1293 - - - - - - - - - 200 - - - - - - 1.02BC732C912E22F368101E336487D192 - - - - - - - - - - - - - - - 200 - - - - - - 1.58AA7409654D5D50B6B8F55539C0774B - - - - - - - - - 200 - - - - - - 1.6B1CA505E2302A04F63AA27099F0FCFF - - - - - - - - - - - - - - - 200 - - - - - - 1.96BE833135E4A5C8F7DE52803D85CCA1 - - - - - - - - - 200 - - - - - - 1.3FB901D98106C97ED02FBD2FCB72A368 - - - - - - - - - - - - - - - 200 - - - - - - 1.06D8300D0336BED673A20EF70C44CCCF - - - - - - - - - 200 - - - - - - 1.C9293362A29ABB99EA2382C6B71D0649 - - - - - - - - - - - - - - - 200 - - - - - - 1.351B871DFA1717273590632B38A4EBC7 - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.6DFABCE265B2455CBE17C12CF01CDDD2 - - - - - - - - - - - - - - - 200 - - - - - - 1.C4D2CFB128128AFB2C46656E3EE693BB - - - - - - - - - 200 - - - - - - 1.9222B04244CF97705F3488EE7906FC41 - - - - - - - - - - - - - - - 200 - - - - - - 1.AA0AD23B2F046B29AA8947581FDFB860 - - - - - - - - - 200 - - - - - - 1.D74722063AC27B6ECB815A78C0E790C5 - - - - - - - - - - - - - - - 200 - - - - - - 1.E5ACD5AF9B1F02DDDF00504737297CFD - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.8E55D6D6105C140A17D3438C4F4D8D54 - - - - - - - - - - - - - - - 200 - - - - - - 1.86F306440C4799F14DD5F4C0719E507C - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.301D82C48DB6624F74A9A6BD309A9E40 - - - - - - - - - - - - - - - 200 - - - - - - 1.098207A6680442B3FA9643BB23CB370E - - - - - - - - - 200 - - - - - - 1.0EC16E3818F17C785ABB022A34A7A083 - - - - - - - - - - - - - - - 200 - - - - - - 1.F1ED654859180EBA33AD4697444A2636 - - - - - - - - - 200 - - - - - - 1.84A39C5D428089EF64F5DB0558FA2C45 - - - - - - - - - - - - - - - 200 - - - - - - 1.4C47E15164EB0479D97A05D6AF22162F - - - - - - - - - - - - - - 204 - - - - - - 404 - - - - - - 1.BEEFBBCACF4A979C567F1D144C04067C - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.51440FCFF3ADF3834C5500FF554FFBE2 - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.70D55191E13B0C77A5FF57DA126E0849 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 403 - - - - - - 1.6B1C8916BB856B9EEF24DE4CB561989B - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.1F6F3DD14D68AD328398FA0C8C1BA523 - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.8677D16DE53C2800647C7DB609C6EE44 - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.67D1B7BB3E64E9C05C62F59054DF73DE - - - - - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.867574E65E9156E31D51517D17DDE283 - - - - - - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.833E8B67365C5B36D6B3E2C048660EEB - - - - - - - - - - - 204 - - - - - - 1.E7BF64005D511F7DF092A1FD63CAFDB2 - - - - - - - - - - - 200 - - - - - - 1.6DA60D3A441DEB83245CF9390DB652C2 - - - - - - - - - - - 204 - - - - - - 1.FCB7A1CCECDBFE60B9F9268A4DA13E64 - - - - - - - - - - - 200 - - - - - - 1.5EDB52181C6563D67BB04B9F6F9FFCB3 - - - - - - - - - - - - - 204 - - - - - - 1.602C9239FB1B18A48D8E6AB920F9865E - - - - - - - - - - - - - 200 - - - - - - 1.613F01620D33F44F7F08DAD27477860D - - - - - - - - - - - - 201 - - - - - - 1.B3F196534F6B3239F608E60F46CC5054 - - - - - - - - - - - 204 - - - - - - 1.9395090644FD6A9EEDE620F2EDB2659C - - - - - - - - - 204 - - - - - - 1.51360490B8BC0FEA841584D3A7941DA9 - - - - - - - - - 204 - - - - - - 1.21D484F75EB67BB6E52299CFE9026E8C - - - - - - - - - 204 - - - - - - 1.B470C7165F3CC8ED799ED4F8B5BAEA45 - - - - - - - - - 204 - - - - - - 1.C56316687F31CD493F7064FD951EC99C - - - - - - - - - - - 204 - - - - - - 1.79EEE017A84D0C323D68CA23A8CB1076 - - - - - - - - - - - 200 - - - - - - 1.A4AFD3D5DA908492647C739E941CC97C - - - - - - - - - - - 200 - - - - - - 1.EF17F568146C914F8023380045758F9C - - - - - - - - - - - - - - - - - 200 - - - - - - 1.3D539F4D333D3240C489C26EC0A011EF - - - - - - - - - 200 - - - - - - 1.B0E4F8E2EF4C7507621D37BF97395F31 - - - - - - - - - - - - - - - - 200 - - - - - - 1.A426A6A86571D4DB76768FBF9E3540DF - - - - - - - - - 200 - - - - - - 1.BB0DDF53B3466065E0CC36A0EDFF2834 - - - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.033F928F2F6A0DE70086DFE3C999B9B6 - - - - - - - - - - - - - - - - - - - 204 - - - - - - 1.C21A692F9E87799AB2806A96B545C0C6 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.6B887FD15AF647C5F0ED993C439A0EE0 - - - - - - - - - - - 204 - - - - - - 409 - - - - - - 1.28359B909678D42A4868FB82F28934BB - - - - - - - - - - - 200 - - - - - - 1.486CB0412BAD44C82290FBD64DEC1F6D - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 404 - - - - - - 1.C2B1E38A255F67B820C6DB2C5A021FC5 - - - - - - - - - - - - - 204 - - - - - - 1.AA7061BA6F294ACDB2FA2282E0742BCC - - - - - - - - - - - - - 200 - - - - - - 1.A5E2220D36BE184AE56CCD3CFC42D0AE - - - - - - - - - - - 204 - - - - - - 1.F6BC5F562CC7CDDF11632321B21D97DF - - - - - - - - - - - - - - 201 - - - - - - 1.97CAA19C72182CEF847821F9E6FB3AAA - - - - - - - - - - - - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 409 - - - - - - 1.3B8F9F9CA8F1879985BF29BF5CBD21E6 - - - - - - - - - - - - - - - 201 - - - - - - 1.019396D4D4686224FF7C3CB6D1E0C0FF - - - - - - - - - 204 - - - - - - 1.56E9BDA78930F90CD41C280B94F3EC92 - - - - - - - - - 204 - - - - - - 1.A7B51CF0108CAE7FF2ED2ECFEEF990D9 - - - - - - - - - 204 - - - - - - 1.02F4797EB106FFD0157EC4EAB8FBB3BC - - - - - - - - - - - - - - - - - 200 - - - - - - 1.6D17F999F7BD299E10604D67FB269746 - - - - - - - - - 200 - - - - - - 1.FC523C8224CB7FBABCF213D5D951CB18 - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.0647B93684A5AF9B4EF9AAFC7148E0C7 - - - - - - - - - 200 - - - - - - 1.04BA526681D926E6F55834C3FF14C800 - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.C7CE8CF71088F3DB585CD3B02AD6C01E - - - - - - - - - - - 200 - - - - - - 1.C784129AA41D66504348A3879B18409C - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 409 - - - - - - 1.B3C891ADBE07985D8EB07F47AD5B9DA9 - - - - - - - - - 204 - - - - - - 1.574C8D1B7983E679131E37FD5C3DF1B3 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.75E4BA966FFC501D192F53E91B7DA97C - - - - - - - - - - - - - - - - 200 - - - - - - 1.CB9A35E0D20D8F23F42BE689119E06FA - - - - - - - - - 200 - - - - - - 1.D7B16FCF4CB54A4DDD0B7B96965B0C89 - - - - - - - - - 200 - - - - - - 1.6C78CB68979C1B30B65792A51C4909B4 - - - - - - - - - 200 - - - - - - 503 - - - - - - 1.1425C7EF3EB1C555EEDB3A7B83959C18 - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.6C71667DFCE4EFE9D2D594675F5D0548 - - - - - - - - - - - 200 - - - - - - 1.3FA058A0E73CD716458E4AD473D01D8E - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.7A7A1F423942BCD065A53F5E2C08CA10 - - - - - - - - - - - 200 - - - - - - 1.686D026F4E37237A3FB0CFDDADBC9F8A - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.285B3B8B3249390AC0EA62095620648D - - - - - - - - - - - 200 - - - - - - 1.483EDC95D9050419855BB2C9B7D9395A - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.57134A2893313DE704198EED54D5B6E6 - - - - - - - - - - - 200 - - - - - - 1.9193C0F29388C5B9B6583A6BF6C2B347 - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.424FC52414BFE0A49B6746D5DB1256AB - - - - - - - - - - - 200 - - - - - - 1.13C8280BFD2D49B31E703A6C942A14BB - - - - - - - - - - - 200 - - - - - - 1.2ED8A733A34F7268A165FCB3C4DE0232 - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 409 - - - - - - 1.BCD510DF25513B8FAF0352336F094053 - - - - - - - - - 204 - - - - - - 1.D24D24F09DCA78579C08ADE1D5528A18 - - - - - - - - - 204 - - - - - - 1.388A14B11DC4161D76E7BA3524CED336 - - - - - - - - - 204 - - - - - - 404 - - - - - - 1.E8ECE9BA39F0B03F8394B4AB5065B60D - - - - - - - - - 204 - - - - - - 1.67C819CC3E37319CB3D533A2D31F00D7 - - - - - - - - - 204 - - - - - - 1.7A9D46F2B10E01B201BD25BF3DA3E3D6 - - - - - - - - - 204 - - - - - - 404 - - - - - - 1.466E11BA31409FC6549BB27A0C1400CC - - - - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.5458586BDBC05CE6DC7B96FB305E279E - - - - - - - - - - - - - - - - - 204 - - - - - - 400 - - - - - - 1.D07A22B79C602A5E8C570C5E049FD7AB - - - - - - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.0AE60BB682E75CC3CB3CE074995267EF - - - - - - - - - - - - - - 200 - - - - - - 1.EF0CC59153D7673ED206E0F310880A6E - - - - - - - - - 204 - - - - - - 1.D946E977B16DE185BC7065F3C36BBA94 - - - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.6758EF1C334FA94EC51F836A229DFFCA - - - - - - - - - - - - - 200 - - - - - - 1.D96F1DC7CD390C447BBA6A55F52476AC - - - - - - - - - - - 200 - - - - - - 1.74729E8767FC62D9F49C309DA2993DE6 - - - - - - - - - 200 - - - - - - 1.D9690323F9BD00A1D7AC14D449C5C5F5 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.2BDEFEC679C5FBAF0D8D2934FE55F708 - - - - - - - - - 200 - - - - - - 404 - - - - - - 1.2ADB64C9DC3241D0FFE93910210E1FF9 - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.12337E3CF98F2E0E44AEB002441C4918 - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.F0DCE0BD19F895084F3C461358ABB31B - - - - - - - - - - - - - - - - - 200 - - - - - - 1.362B98FD68A372E063F679FC32F89B31 - - - - - - - - - 200 - - - - - - 1.CB7932D0E8A306C5A2E35C8916C0E4B4 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.E62DED290400027E754EB45DBAC5062D - - - - - - - - - 200 - - - - - - 1.DBBD22390D6F477450A6966FDA2CA298 - - - - - - - - - - - 200 - - - - - - 1.FED65C1D6BB97C21B4F9DA0B7A997D35 - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.44F69227AF5D5C013E4E8870692550C7 - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.6B2469AA8D0FC2655F6EB394348EB437 - - - - - - - - - 200 - - - - - - 1.A0A9BFEABE8E3C638E51660CF67D0B3C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 500 - - - - - - 1.0BFC9FE27D3A590769329D70A0E2E872 - - - - - - - - - - - - - - - - - - - 204 - - - - - - 1.D86253165E5E58A4859699AF6C04C146 - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.DB420EA069BBE1730C24DC9EDA476595 - - - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.31CBB28C0277768C8BF04A6CF1BA98A5 - - - - - - - - - - - - - 200 - - - - - - 1.E6B45FD1B7595DCC123636DD01E50D8A - - - - - - - - - - - 204 - - - - - - 409 - - - - - - 1.AD707ECC69A1E835FADE9B7B896C7C53 - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.2EC7C7222330CC8A26AD23348C22DFBD - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.304855C6B7C0744B1F4E23991BD4CF83 - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.94A9B934CC18AB22E125F70FBB9F82DE - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.038E34A9C374FC176986FC568A165527 - - - - - - - - - - - 200 - - - - - - 1.CA5A1C1C65E431A37F3207B81767774B - - - - - - - - - - - - - - - 204 - - - - - - 1.7D48EAAB19465D9008EFE5C6E3C020EA - - - - - - - - - - - - - - - 200 - - - - - - 1.3669C6C2F1550E1554DB9CF129DCD965 - - - - - - - - - - - - - 204 - - - - - - 207 - - - - - - 1.A6D31BBFAFCCC9A55B9FEBF72E1C2953 - - - - - - - - - - - - - 200 - - - - - - 1.32E4082ED243CB134EA743FF78000BD5 - - - - - - - - - 204 - - - - - - 1.38E575DC2AF4B7D7CF3203E6B7BDA74D - - - - - - - - - - - - - 201 - - - - - - 1.220648A0923367BC4FA2794FA4BE4591 - - - - - - - - - - - - - 201 - - - - - - 1.38448C20E04942C66F6D9AB3169CEF09 - - - - - - - - - 204 - - - - - - 1.B7BB4C29193AC92DB35E9E206A01E30D - - - - - - - - - 204 - - - - - - 1.4D5F15EE9801D7E3BE0892FD38AFDE0D - - - - - - - - - 204 - - - - - - 1.E062F9FB6D3FA8A9EEE31C6A81CC6604 - - - - - - - - - 204 - - - - - - 1.78F8ED04EC79A126AEADE8C08B0E4F97 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.958F111DBDA1BCE46EFBC10511A145E9 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.1E72B20786B3BFB6DE896C380864C4ED - - - - - - - - - 200 - - - - - - 1.A62A0E7E1808EED079989D04772B6CB6 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.65E7DE349575885F8EC2E78FFBBD3484 - - - - - - - - - 200 - - - - - - 1.17A61EEDF79D76747BE37B3DA3F698DF - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.F0EE6E4715A3D2CFB1F5795EA52EF0A1 - - - - - - - - - - - 200 - - - - - - 1.59DE4FDFB535F952488C8C76082D1957 - - - - - - - - - - - - - - - - - 204 - - - - - - 1.E8DD94F2A92ABC73D6632A48722BDF66 - - - - - - - - - - - 204 - - - - - - 409 - - - - - - 1.83B487198471CDEAF5C95D371BE1227E - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 409 - - - - - - 1.B13DC16C4369B842DD1580DFC9A23E90 - - - - - - - - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 1.D9B3DB52DF8218B45D48BECB5131915E - - - - - - - - - - - - - 200 - - - - - - 1.CF52BFFDF3E12D43EFD5F614833B7DCE - - - - - - - - - - - - - 201 - - - - - - 1.FF43777C8C33E41102BCF3F2A2A90C64 - - - - - - - - - 204 - - - - - - 1.7B3676D45CECCC1D12D71EBA722FFF30 - - - - - - - - - 204 - - - - - - 1.71B0E6E68AA99863BE55E1D6D037301B - - - - - - - - - 204 - - - - - - 1.9F2F0F9EE78721BF80AD83701F9736A0 - - - - - - - - - - - 200 - - - - - - 1.680A6E46ADDF391752A3A89F95D73448 - - - - - - - - - 200 - - - - - - 1.496A9334045EC97BFFE3A5116694FF85 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.BC1C6F682219387D81896AD542BFDA1B - - - - - - - - - 200 - - - - - - 1.21E756DE8577C5778B49EB14777DE712 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.9066576F0656AE6BA8E13A019F6A59AB - - - - - - - - - 200 - - - - - - 1.444CF76C0D4A6C4E637033A4D4E9126A - - - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.3BFB533872841D46A011D369D3FF2977 - - - - - - - - - - - 204 - - - - - - 409 - - - - - - 1.3426C46B6878DDEC0DA8DA6A0D5554AA - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.068DA432A58C3D7331CA5C906158F229 - - - - - - - - - - - - - - - - - - - - - - - - 204 - - - - - - 1.B316331E65CCB79F118C8A178C4D1112 - - - - - - - - - - - - - - - - - - - - - - - 201 - - - - - - 1.27B9DEC971AF1E0443505F6381B2C647 - - - - - - - - - - - - - 200 - - - - - - 1.F528AE4144225E113F7B00825EE52AA2 - - - - - - - - - - - - - 201 - - - - - - 1.8D68C314C554FFCC800097F48EA2B2BF - - - - - - - - - - - - - 201 - - - - - - 1.B29CE6CAE05044347C6F6D2CD82D2B76 - - - - - - - - - 204 - - - - - - 1.0EDA4B68A5E0A7A119DF093167A9643B - - - - - - - - - 204 - - - - - - 1.25F94118327D5D07CF4BD4214EE33EC0 - - - - - - - - - 204 - - - - - - 1.AD3D66C9BD4CFDABA55559C35CECD9E1 - - - - - - - - - 204 - - - - - - 1.E336292FC529AF487A9AD66216D49654 - - - - - - - - - - - 200 - - - - - - 1.673FA4C32058D8D329E1630ADA8E73C1 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.B74A7AA44043A326AC2D7D7934967B14 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.75F9BD52CF2A252C3696A912624AF4E7 - - - - - - - - - 200 - - - - - - 1.1568E0AA2E38BC533DF1D9A3C26D9A80 - - - - - - - - - - - - - - - - - 200 - - - - - - 1.DA7E3AB4DC966A21CCA466E87760769B - - - - - - - - - 200 - - - - - - 1.AF491ABBC242A023D510DB3FEFC8D333 - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 1.D0BF3B5963590A886B4DECEFF9D5DA2C - - - - - - - - - - - - - - - - - 204 - - - - - - 1.F09CDCAD633DBE0BD4D81B4ACD40F402 - - - - - - - - - - - 204 - - - - - - 409 - - - - - - 1.4F8C9F278402E6FB2E4EA057B834CC73 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 409 - - - - - - 1.251760D30B95DDFD686CF5F8DD244B34 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 409 - - - - - - 1.0FC6240C9AA47CA11A06C45AF5EED527 - - - - - - - - - - - - - 200 - - - - - - 1.AA72044B9C3357E0774AADA4EF555CC6 - - - - - - - - - - - - - - 201 - - - - - - 409 - - - - - - 500 - - - - - - 1.6BCFED905208FF2C3021E49E1113053C - - - - - - - - - 204 - - - - - - 500 - - - - - - 1.E7E6381C3DCFF65F04EFF2E13C486B02 - - - - - - - - - 200 - - - - - - 403 - - - - - - 404 - - - - - - 1.BCF75A4FA6D197563529575007325A9D - - - - - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 404 - - - - - - 1.4D283CDE0658BDE321C6C7B4CFB00DB5 - - - - - - - - - - - - - 200 - - - - - - 400 - - - - - - 1.6D32416F86CAE6372CEE63F13A13B4CE - - - - - - - - - - - 200 - - - - - - 403 - - - - - - 1.E49AE7C4E4606611A2264F17092383DE - - - - - - - - - - - 200 - - - - - - 1.AF255C11E7836E705C16FB2E0C5C5893 - - - - - - - - - - - - - - - - 201 - - - - - - 1.EDD41D719CF5C94BEBC543ED4E1FA92B - - - - - - - - - 204 - - - - - - 1.87C46F7702591A04073B685E3DCA18E8 - - - - - - - - - 200 - - - - - - 1.DF34657F1F638BF55CCB59D8766A7A40 - - - - - - - - - - - - - - - 200 - - - - - - 1.227468E94768C87DC18B9D82AE1DD73A - - - - - - - - - - - - - - - 201 - - - - - - 1.A11EBAEA1FB195A00CA8C77DAA86896E - - - - - - - - - - - 201 - - - - - - 1.ED42C99A3F7707AE33EA46D9155ACF67 - - - - - - - - - 204 - - - - - - 1.CB843F4F8FA5F1FD7A435EF77E9AB382 - - - - - - - - - 200 - - - - - - 1.55C741CC9A0D6215D57FB954E57DBF9E - - - - - - - - - 200 - - - - - - 1.A37E5119D3567CC0420518DD48F43AC6 - - - - - - - - - - - 204 - - - - - - 1.14B1920F8A49D1721022BDA3054DF8EB - - - - - - - - - 201 - - - - - - 1.BB98871AF82585B0C646B6954309CBC3 - - - - - - - - - - - - - - - 201 - - - - - - 400 - - - - - - 403 - - - - - - 1.6D706AB11308B480CF5A83510CFA437B - - - - - - - - - 204 - - - - - - 404 - - - - - - 1.EA981FC342B0BC7143D8A6B5C650CBA3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/contract/5_0_x_contract.xml b/contract/5_0_x_contract.xml new file mode 100644 index 000000000..995e50815 --- /dev/null +++ b/contract/5_0_x_contract.xml @@ -0,0 +1,17648 @@ + + + + + com.spectralogic.s3.common.platform.notification.domain.payload.AzureTargetFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.Ds3TargetFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.GenericDaoNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.JobCompletedNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.JobCreatedNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.JobCreationFailedNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.PoolFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.S3ObjectsCachedNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.S3ObjectsLostNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.S3ObjectsPersistedNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.S3TargetFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.StorageDomainFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.SystemFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.TapeFailureNotificationPayload + + + com.spectralogic.s3.common.platform.notification.domain.payload.TapePartitionFailureNotificationPayload + + + + + + + + + + + + + 204 + + + + + + 1.9D854BF00D3B516D4045D9DBEB4B174A + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 404 + + + + + + 1.A4F544C672FC8C11593427E560385533 + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 409 + + + + + + 1.B17329949B488995473FD573BF5A0507 + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.013CF864155A896718908128F7C31E1E + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 409 + + + + + + 410 + + + + + + 411 + + + + + + 503 + + + + + + 1.5B99BA64EAFD43AEC9359E716A93B234 + + + + + + + + + 204 + + + + + + 403 + + + + + + 404 + + + + + + 409 + + + + + + 1.416E43D944A06C824AD8BF5005FA1DC3 + + + + + + + + + + + 204 + + + + + + 404 + + + + + + 1.2ADEBFA66BD7C8629539A7399BD3A755 + + + + + + + + + + + 200 + + + + + + 1.3303E206BA09EA57A94B52B6205C4782 + + + + + + + + + + + + + + + 200 + + + + + + 1.032AD615FE7006F89222B5D50F080D6A + + + + + + + + + 200 + + + + + + 1.8D18E6B210A254D12ACD074CF265700F + + + + + + + + + + + + + 200 + + + + + + 206 + + + + + + 307 + + + + + + 400 + + + + + + 404 + + + + + + 1.9E10AB31443900A845A6A64AACDA46A8 + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.5AB983AB4BABA77BCD64173290A741B4 + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.CF182CD57551902A475553F26582BC78 + + + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.871E6F61ED03FE40EECFD0AAD53AAA34 + + + + + + + + + + + + + + 200 + + + + + + 1.12220CAF96D6A1B3E1BC31330E95EA51 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.51D7750881DA0A4621487FFE61533D85 + + + + + + + + + + + + + 201 + + + + + + 403 + + + + + + 1.E368236F01A4B820CB381ABB9DC6A481 + + + + + + + + + + + + + 201 + + + + + + 403 + + + + + + 1.8926D009A5E919B034A8C12CC7BC6AA4 + + + + + + + + + + + + 201 + + + + + + 1.AB6BB38915AC1B434AA79A746AEC1CA9 + + + + + + + + + + + + 201 + + + + + + 1.090A514BE0B269138CD466668F79C773 + + + + + + + + + + + + 201 + + + + + + 1.1AF4C0F11AB88FCD30536164F07B3944 + + + + + + + + + + + + 201 + + + + + + 1.878704403C5B1CFAD98804ABD56AB840 + + + + + + + + + + + 201 + + + + + + 1.09B5FAE5CF69BF5E945E124D60852125 + + + + + + + + + + + 201 + + + + + + 1.D65ECD1D08D1272AD5E969F80235DFAC + + + + + + + + + 204 + + + + + + 403 + + + + + + 1.0500995E51CDDBCFFC70327F12F2428F + + + + + + + + + 204 + + + + + + 1.C6B44D720B8BC5FEC46CEDA4EA04CA5F + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.CE89262FB9070D85EAB1C361CB74D99D + + + + + + + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.D561CC0BB1BDF0FCD73E2AC1509393F7 + + + + + + + + + 200 + + + + + + 1.14A107B85D096EB8554EDB0A4A8589B9 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.8A4F25C489C1E3C970CAD13B9AD4754E + + + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 403 + + + + + + 409 + + + + + + 1.4751D97F3546F963C451CE9F9AE16C76 + + + + + + + + + + + 204 + + + + + + 403 + + + + + + 404 + + + + + + 409 + + + + + + 1.7E0B95E1E222BB82689E2AA8CD3FE344 + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.4FAD1C67C3247080EFA33C224B87544D + + + + + + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.8C885A22F5F8EA044A104A020AE563D5 + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.0EB0673D4EFC79596617FFE680876C1F + + + + + + + + + + + 204 + + + + + + 1.E697E63D8C13C0C06626E57BB95305CD + + + + + + + + + 200 + + + + + + 1.90CDE2CBD14856E5FDA2474704819E6B + + + + + + + + + + + + + + + 200 + + + + + + 1.581382F387E3FC77A09A11F14FEB312D + + + + + + + + + 200 + + + + + + 1.4E2A47F1477F1A5E5D4BA9166FD13700 + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 404 + + + + + + 409 + + + + + + 1.8D11714D318A13D76782B5A71471D887 + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.00FF753915ABC8F954677D57253B3230 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.002A078CDCBEB6844EA00B0BBAC7CAC8 + + + + + + + + + + + + + + + 200 + + + + + + 1.B27EA3CC583291FFD676193DBAA4551C + + + + + + + + + 200 + + + + + + 1.8E0A2BF92DD79E7C634778C97619CDEF + + + + + + + + + + + 200 + + + + + + 1.1789113D83DC2E48D1B5D1C221DC1872 + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 409 + + + + + + 1.55EDBA2263ACFB0785E441FF2A58B924 + + + + + + + + + + + + + + + + 201 + + + + + + 1.15D63B0FD0C4257041795BA2235277C5 + + + + + + + + + + + + + + + + 201 + + + + + + 409 + + + + + + 1.A1CF121219F77829C8480AC814898D87 + + + + + + + + + + + + + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 1.7EA25AF7C646BCB2F9BDF8736B50093C + + + + + + + + + + + + + + + + 201 + + + + + + 1.B6E603A64C60859EEA83B2E687FB55AB + + + + + + + + + + + + + + + + + 201 + + + + + + 1.CC4C9ED25B1509ABD0F30B375ABA4D78 + + + + + + + + + 204 + + + + + + 1.377DC47D5802F8BBB59CC5D011268847 + + + + + + + + + 204 + + + + + + 1.E3B3238A4639A19B8507203907EA2D52 + + + + + + + + + 204 + + + + + + 1.5C597451975C08FCCE2F0647EDD16872 + + + + + + + + + 204 + + + + + + 1.D032BD8264B23E052A900CD171273D84 + + + + + + + + + 204 + + + + + + 1.779978550E2AC7519DBEE1B6418D7FA1 + + + + + + + + + 200 + + + + + + 1.BD89C8ADCBAC5C96569ABC8DE7D841D9 + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.760344CC17CCA3AAC0D1AEAAB22664BE + + + + + + + + + 200 + + + + + + 1.7FE0018AE76D9D24DADF93BC83A73EF2 + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.9A7A0BABDD6E7CC2D134B62D158E6C57 + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.8C6D05D23CDCAFBC0344FE0C91513C32 + + + + + + + + + 200 + + + + + + 1.40C486BA0D58B76E2C253E81EB297D0E + + + + + + + + + 200 + + + + + + 1.18B2E9524D43E524BBB9C54ECA35E5F3 + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.87B1B5789ECD05E15FC0C8BFED48E73E + + + + + + + + + 200 + + + + + + 1.B23CBBE34EDFFE1E8FBF444E4E0EA0ED + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.F85D09C772C76D466ECDE210ABD0F6E2 + + + + + + + + + + + + + 200 + + + + + + 1.D90C5C1EF5D3968AE776DED4DD4B41CA + + + + + + + + + + + + + 200 + + + + + + 409 + + + + + + 1.4C6316BC92D7D1285A6565E212E6999E + + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 500 + + + + + + 1.8AB4C4419A05BBB45CC2EEEFE10CAA82 + + + + + + + + + + + + + 200 + + + + + + 1.B024C098E863E2B1C9275B0EBFBA3BF6 + + + + + + + + + + + + + + 200 + + + + + + 1.E7A5FD996704C81CD95CC171BA42549E + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 409 + + + + + + 1.F51C99474F629A2CFD5CDB6BC5CB7C6D + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 409 + + + + + + 1.FB9358D923F09B224C1272BD9B459121 + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 409 + + + + + + 1.B030FA7F19336B7B8C64BAF6E6F6346B + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 409 + + + + + + 1.FCF1BFADC9D4DE1CF114901B69B22280 + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 409 + + + + + + 1.3970B4F7B6EEDF3D16C14B1FE8D74EA5 + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.FCDDCC0EE93BE92A31D4BD84C9DD57C7 + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.39020D24E8F55C01FF5ECC4524C78189 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.823E96C86A899E615759E3AADB7355E0 + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.C8788BC1989E0E16F93945C2F157893B + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.0D4C916F64F122E94EEB6674D7B9F4D1 + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.620EF529E4CD2E0912AE9F42E2B802C0 + + + + + + + + + + + + + + + + 200 + + + + + + 1.2F15899DE5E70055E0490AD29530C842 + + + + + + + + + + + + + + + + 200 + + + + + + 1.DE22EC0929BAB9F743BFC38EAB10D680 + + + + + + + + + + + + + + + + 200 + + + + + + 1.905EEF6FC284DC0AC05F8F1B347829C0 + + + + + + + + + + + + + + + + 200 + + + + + + 1.BEECB5756E585359144D71D4410D4846 + + + + + + + + + + + + + + + + 200 + + + + + + 1.B8E477B5613F3E518F79082D5552E7AC + + + + + + + + + + + + + + + + + 200 + + + + + + 1.1480092553E000D0103C80E1BC65B2C5 + + + + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.B32DA5E8C42BDE53830D288C86582A9B + + + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.FD0CCCBDAB885F5E5C8D9BD9DA12B9CE + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 1.1B32364BA03FED4EBBD9BEF15A49EFB1 + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 1.F1B9C4424263D106712B36B7809F8EFC + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 1.782935F97E84EF7CAABC357C5CEE2271 + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 1.F4A8A78DF6670ECDAB83A83A18D1547D + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 1.2C0E9739F7F0BF5B9C16B620D3C195EB + + + + + + + + + + + + 201 + + + + + + 403 + + + + + + 409 + + + + + + 1.8611905E16872C3EEFC979239C47CFFE + + + + + + + + + + + 201 + + + + + + 1.D6C48865C0991834DDDE193AB40E04EA + + + + + + + + + + + + 201 + + + + + + 403 + + + + + + 1.5A1DF310850382BEEFC771A9C1DECC3D + + + + + + + + + 204 + + + + + + 403 + + + + + + 1.33DEA650BE9ABCDCDF53E462D402DAFE + + + + + + + + + 204 + + + + + + 403 + + + + + + 1.E434ED8B2A34F104A95442717B1A4BA7 + + + + + + + + + 200 + + + + + + 1.25BA53F39517497CBFEC02F6F1A1281D + + + + + + + + + + + + + + + + + 200 + + + + + + 1.02D9D53D22A0F5B6893643EE40ADB324 + + + + + + + + + 200 + + + + + + 1.ABED6B8929079AC01A596C9E4C08CBF8 + + + + + + + + + + + + + + + + 200 + + + + + + 1.CA6D598467AAD4083472C11E72F28A8A + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 1.03E8ABF4920FE0C59B424EEDB8001FAB + + + + + + + + + + + + + 200 + + + + + + 204 + + + + + + 403 + + + + + + 1.3289F9FD0E9ACCD50787DB1A0055712D + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 404 + + + + + + 1.4DB23DDC56235578526ECD74A1E1D151 + + + + + + + + + + + 204 + + + + + + 1.278BB8E0110D66EDACF595107C09427A + + + + + + + + + + + + + + 204 + + + + + + 1.5787086FAAD0AEFD6965BE9007AEF32F + + + + + + + + + + + + + + 204 + + + + + + 1.F66A4CBE1684496D395E5546FEB8C8B8 + + + + + + + + + + + 204 + + + + + + 1.EDC1DDE6748591464113649924079D39 + + + + + + + + + 204 + + + + + + 1.5A6D3D3A60E77AC626275AF623C4C766 + + + + + + + + + 204 + + + + + + 1.C079F9483A04E55B04DBB93A82435427 + + + + + + + + + + + 200 + + + + + + 1.1212DC6708EBC50394B744582FAA65B4 + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 404 + + + + + + 500 + + + + + + 12.7853EE12A10929010211D370E4E9FCB8 + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 13.33017D3F34393D367E5E63FB7F1DEB3E + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 404 + + + + + + 1.1AA08A21610BD902ED2A0BFDBB145B9C + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.5F29580D0FA9D13D4F31F6FA1479253C + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.BE9B123D699A33A084C657EDA216FD46 + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.366B50C862A74986AFC2A1FD9AFA0DC8 + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.2CB8F6FD0FD4AAB2DBFDA3B66906F811 + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.82806C1E451AD1325DD45123292E6360 + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.AF1AD1BB3EE186EBC9E967F37EF47B63 + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.81935DED0B11C2F6579420B1D503F846 + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.96AA26481EDB1492BF1A4696FB4A5E90 + + + + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 409 + + + + + + 410 + + + + + + 12.E85F3447509D8658DC4747BDBC1124AE + + + + + + + + + 200 + + + + + + 12.D2E1E5F53C787AAE87CD6C64E57DF392 + + + + + + + + + + + 200 + + + + + + 1.5441D6DB77E32465283AFFCD70BF0BD9 + + + + + + + + + + + + 200 + + + + + + 1.A91ACBDE9427D4617DBA938B01FD4A65 + + + + + + + + + + + + + 200 + + + + + + 1.46852EDC36DDDB68792432241EBAB228 + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 1.8DD6A5CAEBA22CCE74B380322FB5EDD6 + + + + + + + + + + + + + + 200 + + + + + + 204 + + + + + + 403 + + + + + + 1.6F544A6CED02468AF923384632138561 + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.0D522E432703A7E48DBEDD1A6BB5CEF8 + + + + + + + + + 204 + + + + + + 1.A1093E63522E0D37459A3DD2ED4BA382 + + + + + + + + + + + + 204 + + + + + + 1.381372DCEE1323BA3EC6135F28BD40E7 + + + + + + + + + + + + 204 + + + + + + 411 + + + + + + 1.B66BD19B24CA38C77915186CAC7278FB + + + + + + + + + 204 + + + + + + 403 + + + + + + 1.61F4F2C6BB6C6B6682D36487830BB9DC + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 402 + + + + + + 1.5A3E7F31249938D514C56E364FC6D02F + + + + + + + + + 200 + + + + + + 1.6DAEDCFBF2E71F76371CDB2DE03FB216 + + + + + + + + + + + + + + 200 + + + + + + 1.4EB20E46D4C9A9D1A9C832A10416B269 + + + + + + + + + + + + 200 + + + + + + 1.D6574E9F317A632E897CC1497A014EE7 + + + + + + + + + + + + + + + 201 + + + + + + 1.2963DE5A15B7A94AE018A555B04855E3 + + + + + + + + + + + + + + + 201 + + + + + + 1.BA2D594EAC2171E3CD66A1E4B261C157 + + + + + + + + + + + + + + + + 201 + + + + + + 403 + + + + + + 1.F6F99FB1D96FAAB52761A4A6F9C007F4 + + + + + + + + + + + + + + + 201 + + + + + + 1.4493BC861FFB54D0474875CDA923917F + + + + + + + + + + + + + + + 201 + + + + + + 1.BCDE69D118A54DB3850A7A1DCB9044A5 + + + + + + + + + + + + + + + + 201 + + + + + + 1.B9B14FD95B7365854A4873C9E03CF714 + + + + + + + + + + + + + + + 201 + + + + + + 1.CB59926ABCCE409B8DA620D7098051EF + + + + + + + + + + + + + + + + 201 + + + + + + 1.8A412C738BCEA2E768EEE5AFA91A02E3 + + + + + + + + + + + + + + + 201 + + + + + + 1.F58DEB2156F89FEFF73AA296FB996076 + + + + + + + + + + + + + + + 201 + + + + + + 1.6D9C05CCD6FC973CEC7EC06B2852C004 + + + + + + + + + + + + + + + 201 + + + + + + 1.D2F89CEFD1D076C722E383CD47F54B0E + + + + + + + + + + + + + + + 201 + + + + + + 1.C3E90840E58C0ED58DE5285F1C629007 + + + + + + + + + + + + + + + 201 + + + + + + 1.697EEA5D819D1CCED8356F3707A80CC0 + + + + + + + + + + + + + + + 201 + + + + + + 1.F8EE6F2C578B71C30A5818323B8C63DD + + + + + + + + + 204 + + + + + + 1.CEC966DCE333C324697D8D2C014D5844 + + + + + + + + + 204 + + + + + + 1.F75FB6B03E5778971F18B3E156F1C368 + + + + + + + + + 204 + + + + + + 1.FB37D5236F8B9FAA3C23E1E1ED75EF7B + + + + + + + + + 204 + + + + + + 1.BF2D067D7C365D5CD381837F5376FBCC + + + + + + + + + 204 + + + + + + 1.1DCB7A5A19D0073AB4C529DE68EFF590 + + + + + + + + + 204 + + + + + + 404 + + + + + + 1.AE62860962CCA944FDE6BA7A1FA29BE8 + + + + + + + + + 204 + + + + + + 1.74228C20E21299810A61BDC1D72981CB + + + + + + + + + 204 + + + + + + 1.5A5F6DB8F16E8BA2850BBC9786BF933A + + + + + + + + + 204 + + + + + + 1.9B0188827522EB7EEF626D5957F16EF7 + + + + + + + + + 204 + + + + + + 1.057E27FF0C7515839363635ABD87011B + + + + + + + + + 204 + + + + + + 1.815B2098111720A02816432FD0B11263 + + + + + + + + + 204 + + + + + + 1.F17A1AE113B6FD07741496A307004005 + + + + + + + + + 204 + + + + + + 1.3FD065CF09A9346481021BC207729FC8 + + + + + + + + + 204 + + + + + + 403 + + + + + + 1.67E8651E0A9719E5AA68ED2783076E40 + + + + + + + + + 200 + + + + + + 1.E7E2388B6F0182AA8B191836FDC2EF46 + + + + + + + + + + + + + + + 200 + + + + + + 1.0B3D7131A8DE08F23DD8F92E4FB445CE + + + + + + + + + 200 + + + + + + 1.E016A3B10B9E2BCFBDC052B607BEF218 + + + + + + + + + + + + + + + 200 + + + + + + 1.405BE0983E37E87E48E0D549DFFD22CD + + + + + + + + + 200 + + + + + + 1.D55B0B0605B4BF3AE32149CAD90110CE + + + + + + + + + + + + + + + 200 + + + + + + 1.89699929828B8EC5AE4F1F41003A1293 + + + + + + + + + 200 + + + + + + 1.02BC732C912E22F368101E336487D192 + + + + + + + + + + + + + + + 200 + + + + + + 1.58AA7409654D5D50B6B8F55539C0774B + + + + + + + + + 200 + + + + + + 1.6B1CA505E2302A04F63AA27099F0FCFF + + + + + + + + + + + + + + + 200 + + + + + + 1.96BE833135E4A5C8F7DE52803D85CCA1 + + + + + + + + + 200 + + + + + + 1.3FB901D98106C97ED02FBD2FCB72A368 + + + + + + + + + + + + + + + 200 + + + + + + 1.06D8300D0336BED673A20EF70C44CCCF + + + + + + + + + 200 + + + + + + 1.C9293362A29ABB99EA2382C6B71D0649 + + + + + + + + + + + + + + + 200 + + + + + + 1.351B871DFA1717273590632B38A4EBC7 + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.6DFABCE265B2455CBE17C12CF01CDDD2 + + + + + + + + + + + + + + + 200 + + + + + + 1.C4D2CFB128128AFB2C46656E3EE693BB + + + + + + + + + 200 + + + + + + 1.9222B04244CF97705F3488EE7906FC41 + + + + + + + + + + + + + + + 200 + + + + + + 1.AA0AD23B2F046B29AA8947581FDFB860 + + + + + + + + + 200 + + + + + + 1.D74722063AC27B6ECB815A78C0E790C5 + + + + + + + + + + + + + + + 200 + + + + + + 1.E5ACD5AF9B1F02DDDF00504737297CFD + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.8E55D6D6105C140A17D3438C4F4D8D54 + + + + + + + + + + + + + + + 200 + + + + + + 1.86F306440C4799F14DD5F4C0719E507C + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.301D82C48DB6624F74A9A6BD309A9E40 + + + + + + + + + + + + + + + 200 + + + + + + 1.098207A6680442B3FA9643BB23CB370E + + + + + + + + + 200 + + + + + + 1.0EC16E3818F17C785ABB022A34A7A083 + + + + + + + + + + + + + + + 200 + + + + + + 1.F1ED654859180EBA33AD4697444A2636 + + + + + + + + + 200 + + + + + + 1.84A39C5D428089EF64F5DB0558FA2C45 + + + + + + + + + + + + + + + 200 + + + + + + 1.4C47E15164EB0479D97A05D6AF22162F + + + + + + + + + + + + 204 + + + + + + 404 + + + + + + 1.DCC71D6527639A19725050B37CB780DE + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.51440FCFF3ADF3834C5500FF554FFBE2 + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.70D55191E13B0C77A5FF57DA126E0849 + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 403 + + + + + + 1.590227D4C2600E9BBB7B5082E4792767 + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.445C035DB924A9B0FA42C72674EE4F89 + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.AA975962B34D69CE1C78662B13A65313 + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.BDA9A7110ADB2C122D0CA705B6B1D6FA + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 404 + + + + + + 1.C861C307A1307B7D19E67CEF0C9FF674 + + + + + + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.9AC8B3AFD901820523B5E22441984736 + + + + + + + + + + + 204 + + + + + + 1.E7BF64005D511F7DF092A1FD63CAFDB2 + + + + + + + + + + + 200 + + + + + + 1.6DA60D3A441DEB83245CF9390DB652C2 + + + + + + + + + + + 204 + + + + + + 1.FCB7A1CCECDBFE60B9F9268A4DA13E64 + + + + + + + + + + + 200 + + + + + + 1.5EDB52181C6563D67BB04B9F6F9FFCB3 + + + + + + + + + + + + + 204 + + + + + + 1.602C9239FB1B18A48D8E6AB920F9865E + + + + + + + + + + + + + 200 + + + + + + 1.613F01620D33F44F7F08DAD27477860D + + + + + + + + + + + + 201 + + + + + + 1.B3F196534F6B3239F608E60F46CC5054 + + + + + + + + + + + 204 + + + + + + 1.9395090644FD6A9EEDE620F2EDB2659C + + + + + + + + + 204 + + + + + + 1.51360490B8BC0FEA841584D3A7941DA9 + + + + + + + + + 204 + + + + + + 1.21D484F75EB67BB6E52299CFE9026E8C + + + + + + + + + 204 + + + + + + 1.B470C7165F3CC8ED799ED4F8B5BAEA45 + + + + + + + + + 204 + + + + + + 1.C56316687F31CD493F7064FD951EC99C + + + + + + + + + + + 204 + + + + + + 1.79EEE017A84D0C323D68CA23A8CB1076 + + + + + + + + + + + 200 + + + + + + 1.A4AFD3D5DA908492647C739E941CC97C + + + + + + + + + + + 200 + + + + + + 1.EF17F568146C914F8023380045758F9C + + + + + + + + + + + + + + + + + 200 + + + + + + 1.3D539F4D333D3240C489C26EC0A011EF + + + + + + + + + 200 + + + + + + 1.B0E4F8E2EF4C7507621D37BF97395F31 + + + + + + + + + + + + + + + + 200 + + + + + + 1.A426A6A86571D4DB76768FBF9E3540DF + + + + + + + + + 200 + + + + + + 1.BB0DDF53B3466065E0CC36A0EDFF2834 + + + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.25C2373230B0EA43C94F0DCAAAEEA6FB + + + + + + + + + + + + + + + + + + 204 + + + + + + 1.179F228C42340ABB9EEB830006BC5F2A + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.3DDC7451EA1620AE50203012113A61CC + + + + + + + + + + + 204 + + + + + + 409 + + + + + + 1.28359B909678D42A4868FB82F28934BB + + + + + + + + + + + 200 + + + + + + 1.486CB0412BAD44C82290FBD64DEC1F6D + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 404 + + + + + + 1.C2B1E38A255F67B820C6DB2C5A021FC5 + + + + + + + + + + + + + 204 + + + + + + 1.AA7061BA6F294ACDB2FA2282E0742BCC + + + + + + + + + + + + + 200 + + + + + + 1.A5E2220D36BE184AE56CCD3CFC42D0AE + + + + + + + + + + + 204 + + + + + + 1.F6BC5F562CC7CDDF11632321B21D97DF + + + + + + + + + + + + + + 201 + + + + + + 1.97CAA19C72182CEF847821F9E6FB3AAA + + + + + + + + + + + + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 409 + + + + + + 1.3B8F9F9CA8F1879985BF29BF5CBD21E6 + + + + + + + + + + + + + + + + 201 + + + + + + 1.E05E227E544680F0B4BB26DE70617352 + + + + + + + + + 204 + + + + + + 1.56E9BDA78930F90CD41C280B94F3EC92 + + + + + + + + + 204 + + + + + + 1.A7B51CF0108CAE7FF2ED2ECFEEF990D9 + + + + + + + + + 204 + + + + + + 1.02F4797EB106FFD0157EC4EAB8FBB3BC + + + + + + + + + + + + + + + + + 200 + + + + + + 1.6D17F999F7BD299E10604D67FB269746 + + + + + + + + + 200 + + + + + + 1.FC523C8224CB7FBABCF213D5D951CB18 + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.0647B93684A5AF9B4EF9AAFC7148E0C7 + + + + + + + + + 200 + + + + + + 1.04BA526681D926E6F55834C3FF14C800 + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.C7CE8CF71088F3DB585CD3B02AD6C01E + + + + + + + + + + + + + 200 + + + + + + 1.2861D535C9E907B2316C6DD326F9C9DB + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 409 + + + + + + 1.B3C891ADBE07985D8EB07F47AD5B9DA9 + + + + + + + + + 204 + + + + + + 1.574C8D1B7983E679131E37FD5C3DF1B3 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.75E4BA966FFC501D192F53E91B7DA97C + + + + + + + + + + + + + + + + 200 + + + + + + 1.CB9A35E0D20D8F23F42BE689119E06FA + + + + + + + + + 200 + + + + + + 1.D7B16FCF4CB54A4DDD0B7B96965B0C89 + + + + + + + + + 200 + + + + + + 1.6C78CB68979C1B30B65792A51C4909B4 + + + + + + + + + 200 + + + + + + 503 + + + + + + 1.1425C7EF3EB1C555EEDB3A7B83959C18 + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.6C71667DFCE4EFE9D2D594675F5D0548 + + + + + + + + + + + 200 + + + + + + 1.3FA058A0E73CD716458E4AD473D01D8E + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.7A7A1F423942BCD065A53F5E2C08CA10 + + + + + + + + + + + 200 + + + + + + 1.686D026F4E37237A3FB0CFDDADBC9F8A + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.285B3B8B3249390AC0EA62095620648D + + + + + + + + + + + 200 + + + + + + 1.483EDC95D9050419855BB2C9B7D9395A + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.57134A2893313DE704198EED54D5B6E6 + + + + + + + + + + + 200 + + + + + + 1.9193C0F29388C5B9B6583A6BF6C2B347 + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.424FC52414BFE0A49B6746D5DB1256AB + + + + + + + + + + + 200 + + + + + + 1.13C8280BFD2D49B31E703A6C942A14BB + + + + + + + + + + + 200 + + + + + + 1.2ED8A733A34F7268A165FCB3C4DE0232 + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 409 + + + + + + 1.BCD510DF25513B8FAF0352336F094053 + + + + + + + + + 204 + + + + + + 1.D24D24F09DCA78579C08ADE1D5528A18 + + + + + + + + + 204 + + + + + + 1.388A14B11DC4161D76E7BA3524CED336 + + + + + + + + + 204 + + + + + + 404 + + + + + + 1.E8ECE9BA39F0B03F8394B4AB5065B60D + + + + + + + + + 204 + + + + + + 1.67C819CC3E37319CB3D533A2D31F00D7 + + + + + + + + + 204 + + + + + + 1.7A9D46F2B10E01B201BD25BF3DA3E3D6 + + + + + + + + + 204 + + + + + + 404 + + + + + + 1.466E11BA31409FC6549BB27A0C1400CC + + + + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.5458586BDBC05CE6DC7B96FB305E279E + + + + + + + + + + + + + + + + + 204 + + + + + + 400 + + + + + + 1.221F7DCAF04AE6EB1BADF4997871733E + + + + + + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.2C5C28BB2FF03BAE5647F7DA4B0FBC7C + + + + + + + + + + + + + + 200 + + + + + + 1.EF0CC59153D7673ED206E0F310880A6E + + + + + + + + + 204 + + + + + + 1.D946E977B16DE185BC7065F3C36BBA94 + + + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.6758EF1C334FA94EC51F836A229DFFCA + + + + + + + + + + + + + 200 + + + + + + 1.D96F1DC7CD390C447BBA6A55F52476AC + + + + + + + + + + + + + + + + 200 + + + + + + 1.A7D83C4D167D0650C16DF8831A5503C4 + + + + + + + + + 200 + + + + + + 1.D9690323F9BD00A1D7AC14D449C5C5F5 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.2BDEFEC679C5FBAF0D8D2934FE55F708 + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.2ADB64C9DC3241D0FFE93910210E1FF9 + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.4ABF850B6F44B9FF493B4AD55E1CDA35 + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.F0DCE0BD19F895084F3C461358ABB31B + + + + + + + + + + + + + + + + + 200 + + + + + + 1.362B98FD68A372E063F679FC32F89B31 + + + + + + + + + 200 + + + + + + 1.CB7932D0E8A306C5A2E35C8916C0E4B4 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.E62DED290400027E754EB45DBAC5062D + + + + + + + + + 200 + + + + + + 1.DBBD22390D6F477450A6966FDA2CA298 + + + + + + + + + + + 200 + + + + + + 1.FED65C1D6BB97C21B4F9DA0B7A997D35 + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.44F69227AF5D5C013E4E8870692550C7 + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.6B2469AA8D0FC2655F6EB394348EB437 + + + + + + + + + 200 + + + + + + 1.A0A9BFEABE8E3C638E51660CF67D0B3C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 500 + + + + + + 1.642E5DBD51439CCB994541FC44A20E26 + + + + + + + + + + + + + + + + + + 204 + + + + + + 1.FF1951EAE0ACBAB8DB513DF209D32122 + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.B73F07D16A191E0EFD397E3DCB5CE051 + + + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.31CBB28C0277768C8BF04A6CF1BA98A5 + + + + + + + + + + + + + 200 + + + + + + 1.E6B45FD1B7595DCC123636DD01E50D8A + + + + + + + + + + + 204 + + + + + + 409 + + + + + + 1.AD707ECC69A1E835FADE9B7B896C7C53 + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.0C6CA5CFC56E62E1386738F250C749D4 + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.78750072F5ADD3E16FA02549EED9F0AF + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.94A9B934CC18AB22E125F70FBB9F82DE + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.038E34A9C374FC176986FC568A165527 + + + + + + + + + + + 200 + + + + + + 1.CA5A1C1C65E431A37F3207B81767774B + + + + + + + + + + + + + + + 204 + + + + + + 1.7D48EAAB19465D9008EFE5C6E3C020EA + + + + + + + + + + + + + + + 200 + + + + + + 1.3669C6C2F1550E1554DB9CF129DCD965 + + + + + + + + + + + + + 204 + + + + + + 207 + + + + + + 1.A6D31BBFAFCCC9A55B9FEBF72E1C2953 + + + + + + + + + + + + + 200 + + + + + + 1.32E4082ED243CB134EA743FF78000BD5 + + + + + + + + + 204 + + + + + + 1.38E575DC2AF4B7D7CF3203E6B7BDA74D + + + + + + + + + + + + + 201 + + + + + + 1.220648A0923367BC4FA2794FA4BE4591 + + + + + + + + + + + + + 201 + + + + + + 1.38448C20E04942C66F6D9AB3169CEF09 + + + + + + + + + 204 + + + + + + 1.B7BB4C29193AC92DB35E9E206A01E30D + + + + + + + + + 204 + + + + + + 1.4D5F15EE9801D7E3BE0892FD38AFDE0D + + + + + + + + + 204 + + + + + + 1.E062F9FB6D3FA8A9EEE31C6A81CC6604 + + + + + + + + + 204 + + + + + + 1.78F8ED04EC79A126AEADE8C08B0E4F97 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.958F111DBDA1BCE46EFBC10511A145E9 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.1E72B20786B3BFB6DE896C380864C4ED + + + + + + + + + 200 + + + + + + 1.A62A0E7E1808EED079989D04772B6CB6 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.65E7DE349575885F8EC2E78FFBBD3484 + + + + + + + + + 200 + + + + + + 1.17A61EEDF79D76747BE37B3DA3F698DF + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.F0EE6E4715A3D2CFB1F5795EA52EF0A1 + + + + + + + + + + + 200 + + + + + + 1.59DE4FDFB535F952488C8C76082D1957 + + + + + + + + + + + + + + + + 204 + + + + + + 1.AC6CF1A6EDCCAC74410543D331DCEBFC + + + + + + + + + + + 204 + + + + + + 409 + + + + + + 1.83B487198471CDEAF5C95D371BE1227E + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 409 + + + + + + 1.B13DC16C4369B842DD1580DFC9A23E90 + + + + + + + + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 1.D9B3DB52DF8218B45D48BECB5131915E + + + + + + + + + + + + + 200 + + + + + + 1.CF52BFFDF3E12D43EFD5F614833B7DCE + + + + + + + + + + + + + 201 + + + + + + 1.FF43777C8C33E41102BCF3F2A2A90C64 + + + + + + + + + 204 + + + + + + 1.7B3676D45CECCC1D12D71EBA722FFF30 + + + + + + + + + 204 + + + + + + 1.71B0E6E68AA99863BE55E1D6D037301B + + + + + + + + + 204 + + + + + + 1.9F2F0F9EE78721BF80AD83701F9736A0 + + + + + + + + + + + 200 + + + + + + 1.680A6E46ADDF391752A3A89F95D73448 + + + + + + + + + 200 + + + + + + 1.496A9334045EC97BFFE3A5116694FF85 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.BC1C6F682219387D81896AD542BFDA1B + + + + + + + + + 200 + + + + + + 1.21E756DE8577C5778B49EB14777DE712 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.9066576F0656AE6BA8E13A019F6A59AB + + + + + + + + + 200 + + + + + + 1.444CF76C0D4A6C4E637033A4D4E9126A + + + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.3BFB533872841D46A011D369D3FF2977 + + + + + + + + + + + 204 + + + + + + 409 + + + + + + 1.3426C46B6878DDEC0DA8DA6A0D5554AA + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.068DA432A58C3D7331CA5C906158F229 + + + + + + + + + + + + + + + + + + + + + + + + 204 + + + + + + 1.B316331E65CCB79F118C8A178C4D1112 + + + + + + + + + + + + + + + + + + + + + + + 201 + + + + + + 1.27B9DEC971AF1E0443505F6381B2C647 + + + + + + + + + + + + + 200 + + + + + + 1.F528AE4144225E113F7B00825EE52AA2 + + + + + + + + + + + + + 201 + + + + + + 1.8D68C314C554FFCC800097F48EA2B2BF + + + + + + + + + + + + + 201 + + + + + + 1.B29CE6CAE05044347C6F6D2CD82D2B76 + + + + + + + + + 204 + + + + + + 1.0EDA4B68A5E0A7A119DF093167A9643B + + + + + + + + + 204 + + + + + + 1.25F94118327D5D07CF4BD4214EE33EC0 + + + + + + + + + 204 + + + + + + 1.AD3D66C9BD4CFDABA55559C35CECD9E1 + + + + + + + + + 204 + + + + + + 1.E336292FC529AF487A9AD66216D49654 + + + + + + + + + + + 200 + + + + + + 1.673FA4C32058D8D329E1630ADA8E73C1 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.B74A7AA44043A326AC2D7D7934967B14 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.75F9BD52CF2A252C3696A912624AF4E7 + + + + + + + + + 200 + + + + + + 1.1568E0AA2E38BC533DF1D9A3C26D9A80 + + + + + + + + + + + + + + + + + 200 + + + + + + 1.DA7E3AB4DC966A21CCA466E87760769B + + + + + + + + + 200 + + + + + + 1.AF491ABBC242A023D510DB3FEFC8D333 + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 1.D0BF3B5963590A886B4DECEFF9D5DA2C + + + + + + + + + + + + + + + + 204 + + + + + + 1.658474BB59B4C339A45CF52CB7F697C3 + + + + + + + + + + + 204 + + + + + + 409 + + + + + + 1.4F8C9F278402E6FB2E4EA057B834CC73 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 409 + + + + + + 1.251760D30B95DDFD686CF5F8DD244B34 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 409 + + + + + + 1.0FC6240C9AA47CA11A06C45AF5EED527 + + + + + + + + + + + + + 200 + + + + + + 1.AA72044B9C3357E0774AADA4EF555CC6 + + + + + + + + + + + + + + 201 + + + + + + 409 + + + + + + 500 + + + + + + 1.6BCFED905208FF2C3021E49E1113053C + + + + + + + + + 204 + + + + + + 500 + + + + + + 1.E7E6381C3DCFF65F04EFF2E13C486B02 + + + + + + + + + 200 + + + + + + 403 + + + + + + 404 + + + + + + 1.BCF75A4FA6D197563529575007325A9D + + + + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 404 + + + + + + 1.4D283CDE0658BDE321C6C7B4CFB00DB5 + + + + + + + + + + + + + + 200 + + + + + + 400 + + + + + + 1.10D8DE9FF8DAD881A8553CC2EA0B33D8 + + + + + + + + + + + 200 + + + + + + 403 + + + + + + 1.E49AE7C4E4606611A2264F17092383DE + + + + + + + + + + + 200 + + + + + + 1.AF255C11E7836E705C16FB2E0C5C5893 + + + + + + + + + + + + + + + + 201 + + + + + + 1.EDD41D719CF5C94BEBC543ED4E1FA92B + + + + + + + + + 204 + + + + + + 1.87C46F7702591A04073B685E3DCA18E8 + + + + + + + + + 200 + + + + + + 1.DF34657F1F638BF55CCB59D8766A7A40 + + + + + + + + + + + + + + + 200 + + + + + + 1.227468E94768C87DC18B9D82AE1DD73A + + + + + + + + + + + + + + + 201 + + + + + + 1.A11EBAEA1FB195A00CA8C77DAA86896E + + + + + + + + + + + 201 + + + + + + 1.ED42C99A3F7707AE33EA46D9155ACF67 + + + + + + + + + 204 + + + + + + 1.CB843F4F8FA5F1FD7A435EF77E9AB382 + + + + + + + + + 200 + + + + + + 1.55C741CC9A0D6215D57FB954E57DBF9E + + + + + + + + + 200 + + + + + + 1.A37E5119D3567CC0420518DD48F43AC6 + + + + + + + + + + + 204 + + + + + + 1.14B1920F8A49D1721022BDA3054DF8EB + + + + + + + + + 201 + + + + + + 1.BB98871AF82585B0C646B6954309CBC3 + + + + + + + + + + + + + + + + + 201 + + + + + + 400 + + + + + + 403 + + + + + + 1.577E0E6FD00116FDB9FCC4BA96BC82E6 + + + + + + + + + 204 + + + + + + 404 + + + + + + 1.EA981FC342B0BC7143D8A6B5C650CBA3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java index d7c22b50a..8f6f54212 100644 --- a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java +++ b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java @@ -35,7 +35,6 @@ import java.io.IOException; import java.net.URISyntaxException; import java.nio.channels.FileChannel; -import java.nio.channels.SeekableByteChannel; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java index 81aeba046..67a96a7ac 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java @@ -895,6 +895,7 @@ ModifyJobSpectraS3Response modifyJobSpectraS3(final ModifyJobSpectraS3Request re ReplicatePutJobSpectraS3Response replicatePutJobSpectraS3(final ReplicatePutJobSpectraS3Request request) throws IOException; + @ResponsePayloadModel("MasterObjectList") @Action("MODIFY") @Resource("BUCKET") diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/interfaces/BulkRequest.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/interfaces/BulkRequest.java index 22984cdb4..4a2eb6465 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/interfaces/BulkRequest.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/interfaces/BulkRequest.java @@ -34,8 +34,6 @@ public abstract class BulkRequest extends AbstractRequest { private InputStream stream; private long size; private Priority priority; - private WriteOptimization writeOptimization; - protected JobChunkClientProcessingOrderGuarantee chunkOrdering; public BulkRequest(final String bucket, final Iterable objects) { this.bucket = bucket; @@ -44,11 +42,7 @@ public BulkRequest(final String bucket, final Iterable objects) { public BulkRequest withPriority(final Priority priority) { this.priority = priority; - return this; - } - - public BulkRequest withWriteOptimization(final WriteOptimization writeOptimization) { - this.writeOptimization = writeOptimization; + this.updateQueryParam("priority", priority); return this; } @@ -56,9 +50,6 @@ private InputStream generateStream() { final Ds3ObjectList objects = new Ds3ObjectList(); objects.setObjects(this.ds3Objects); - objects.setPriority(this.priority); - objects.setWriteOptimization(this.writeOptimization); - objects.setChunkClientProcessingOrderGuarantee(this.chunkOrdering); final StringBuilder xmlOutputBuilder = new StringBuilder(); if (this.getCommand() == BulkCommand.PUT) { @@ -108,8 +99,4 @@ public InputStream getStream() { public Priority getPriority() { return priority; } - - public WriteOptimization getWriteOptimization() { - return writeOptimization; - } } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java index 609ad9de3..e61ce46b6 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/StageObjectsJobSpectraS3ResponseParser.java @@ -18,12 +18,10 @@ import com.spectralogic.ds3client.commands.parsers.interfaces.AbstractResponseParser; import com.spectralogic.ds3client.commands.parsers.utils.ResponseParserUtils; -import com.spectralogic.ds3client.commands.spectrads3.PutBulkJobSpectraS3Response; import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Response; import com.spectralogic.ds3client.models.MasterObjectList; import com.spectralogic.ds3client.networking.WebResponse; import com.spectralogic.ds3client.serializer.XmlOutput; - import java.io.IOException; import java.io.InputStream; @@ -36,13 +34,11 @@ public StageObjectsJobSpectraS3Response parseXmlResponse(final WebResponse respo if (ResponseParserUtils.validateStatusCode(statusCode, expectedStatusCodes)) { switch (statusCode) { case 200: - if (ResponseParserUtils.getSizeFromHeaders(response.getHeaders()) == 0) { - return new StageObjectsJobSpectraS3Response(null, this.getChecksum(), this.getChecksumType()); - } try (final InputStream inputStream = response.getResponseStream()) { final MasterObjectList result = XmlOutput.fromXml(inputStream, MasterObjectList.class); return new StageObjectsJobSpectraS3Response(result, this.getChecksum(), this.getChecksumType()); } + default: assert false: "validateStatusCode should have made it impossible to reach this line"; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java index dfe2b4eb1..7c1b5a268 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/EjectStorageDomainBlobsSpectraS3Request.java @@ -28,7 +28,6 @@ import java.nio.charset.Charset; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; import com.google.common.net.UrlEscapers; -import java.util.UUID; public class EjectStorageDomainBlobsSpectraS3Request extends AbstractRequest { @@ -131,4 +130,5 @@ public String getEjectLocation() { return this.ejectLocation; } + } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java index 235dbaf53..e78f30c52 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllPoolsSpectraS3Request.java @@ -18,16 +18,14 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.google.common.net.UrlEscapers; import java.util.UUID; +import com.google.common.net.UrlEscapers; import com.spectralogic.ds3client.models.Priority; public class ImportAllPoolsSpectraS3Request extends AbstractRequest { // Variables - private String conflictResolutionMode; - private String dataPolicyId; private Priority priority; @@ -49,13 +47,6 @@ public ImportAllPoolsSpectraS3Request() { } - public ImportAllPoolsSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { - this.conflictResolutionMode = conflictResolutionMode; - this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); - return this; - } - - public ImportAllPoolsSpectraS3Request withDataPolicyId(final UUID dataPolicyId) { this.dataPolicyId = dataPolicyId.toString(); this.updateQueryParam("data_policy_id", dataPolicyId); @@ -130,11 +121,6 @@ public String getPath() { return "/_rest_/pool"; } - public String getConflictResolutionMode() { - return this.conflictResolutionMode; - } - - public String getDataPolicyId() { return this.dataPolicyId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java index a5050a9a0..2120c7cf7 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportAllTapesSpectraS3Request.java @@ -18,16 +18,14 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.google.common.net.UrlEscapers; import java.util.UUID; +import com.google.common.net.UrlEscapers; import com.spectralogic.ds3client.models.Priority; public class ImportAllTapesSpectraS3Request extends AbstractRequest { // Variables - private String conflictResolutionMode; - private String dataPolicyId; private Priority priority; @@ -49,13 +47,6 @@ public ImportAllTapesSpectraS3Request() { } - public ImportAllTapesSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { - this.conflictResolutionMode = conflictResolutionMode; - this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); - return this; - } - - public ImportAllTapesSpectraS3Request withDataPolicyId(final UUID dataPolicyId) { this.dataPolicyId = dataPolicyId.toString(); this.updateQueryParam("data_policy_id", dataPolicyId); @@ -130,11 +121,6 @@ public String getPath() { return "/_rest_/tape"; } - public String getConflictResolutionMode() { - return this.conflictResolutionMode; - } - - public String getDataPolicyId() { return this.dataPolicyId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java index 4addf085a..91a744817 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportPoolSpectraS3Request.java @@ -18,8 +18,8 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.google.common.net.UrlEscapers; import java.util.UUID; +import com.google.common.net.UrlEscapers; import com.spectralogic.ds3client.models.Priority; public class ImportPoolSpectraS3Request extends AbstractRequest { @@ -28,8 +28,6 @@ public class ImportPoolSpectraS3Request extends AbstractRequest { private final String pool; - private String conflictResolutionMode; - private String dataPolicyId; private Priority priority; @@ -52,13 +50,6 @@ public ImportPoolSpectraS3Request(final String pool) { } - public ImportPoolSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { - this.conflictResolutionMode = conflictResolutionMode; - this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); - return this; - } - - public ImportPoolSpectraS3Request withDataPolicyId(final UUID dataPolicyId) { this.dataPolicyId = dataPolicyId.toString(); this.updateQueryParam("data_policy_id", dataPolicyId); @@ -138,11 +129,6 @@ public String getPool() { } - public String getConflictResolutionMode() { - return this.conflictResolutionMode; - } - - public String getDataPolicyId() { return this.dataPolicyId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java index b126327ef..723b3e2c0 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ImportTapeSpectraS3Request.java @@ -18,8 +18,8 @@ import com.spectralogic.ds3client.networking.HttpVerb; import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; -import com.google.common.net.UrlEscapers; import java.util.UUID; +import com.google.common.net.UrlEscapers; import com.spectralogic.ds3client.models.Priority; public class ImportTapeSpectraS3Request extends AbstractRequest { @@ -28,8 +28,6 @@ public class ImportTapeSpectraS3Request extends AbstractRequest { private final String tapeId; - private String conflictResolutionMode; - private String dataPolicyId; private Priority priority; @@ -60,13 +58,6 @@ public ImportTapeSpectraS3Request(final String tapeId) { } - public ImportTapeSpectraS3Request withConflictResolutionMode(final String conflictResolutionMode) { - this.conflictResolutionMode = conflictResolutionMode; - this.updateQueryParam("conflict_resolution_mode", conflictResolutionMode); - return this; - } - - public ImportTapeSpectraS3Request withDataPolicyId(final UUID dataPolicyId) { this.dataPolicyId = dataPolicyId.toString(); this.updateQueryParam("data_policy_id", dataPolicyId); @@ -146,11 +137,6 @@ public String getTapeId() { } - public String getConflictResolutionMode() { - return this.conflictResolutionMode; - } - - public String getDataPolicyId() { return this.dataPolicyId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java index 62d5f5adc..62c7a27e4 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Request.java @@ -17,22 +17,19 @@ package com.spectralogic.ds3client.commands.spectrads3; import com.spectralogic.ds3client.BulkCommand; +import com.spectralogic.ds3client.models.bulk.Ds3Object; import com.spectralogic.ds3client.commands.interfaces.BulkRequest; +import com.google.common.net.UrlEscapers; import com.spectralogic.ds3client.models.Priority; -import com.spectralogic.ds3client.models.bulk.Ds3Object; -import com.spectralogic.ds3client.networking.HttpVerb; public class StageObjectsJobSpectraS3Request extends BulkRequest { - // Variables + private String name; - private Priority priority; - // Constructor - public StageObjectsJobSpectraS3Request(final String bucketName, final Iterable objects) { super(bucketName, objects); @@ -47,32 +44,22 @@ public StageObjectsJobSpectraS3Request withName(final String name) { } + @Override public StageObjectsJobSpectraS3Request withPriority(final Priority priority) { - this.priority = priority; - this.updateQueryParam("priority", priority); + super.withPriority(priority); return this; } - @Override - public HttpVerb getVerb() { - return HttpVerb.PUT; - } - - @Override - public BulkCommand getCommand() { - return BulkCommand.GET; - } - - + public String getName() { return this.name; } - public Priority getPriority() { - return this.priority; + @Override + public BulkCommand getCommand() { + return BulkCommand.GET; } - } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java index 1eb1b3e47..c7388485b 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/StageObjectsJobSpectraS3Response.java @@ -16,15 +16,21 @@ // This code is auto-generated, do not modify package com.spectralogic.ds3client.commands.spectrads3; -import com.spectralogic.ds3client.commands.interfaces.BulkResponse; +import com.spectralogic.ds3client.models.MasterObjectList; import com.spectralogic.ds3client.models.ChecksumType; import com.spectralogic.ds3client.commands.interfaces.AbstractResponse; -import com.spectralogic.ds3client.models.MasterObjectList; -public class StageObjectsJobSpectraS3Response extends BulkResponse { +public class StageObjectsJobSpectraS3Response extends AbstractResponse { + private final MasterObjectList masterObjectListResult; + public StageObjectsJobSpectraS3Response(final MasterObjectList masterObjectListResult, final String checksum, final ChecksumType.Type checksumType) { - super(masterObjectListResult, checksum, checksumType); + super(checksum, checksumType); + this.masterObjectListResult = masterObjectListResult; + } + + public MasterObjectList getMasterObjectListResult() { + return this.masterObjectListResult; } } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/JobState.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/JobState.java index f4abf11d7..6851e22e8 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/JobState.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/JobState.java @@ -79,7 +79,7 @@ private static class BlobIdentityDecorator { private final PhysicalPlacement physicalPlacement; - private final long version; + private final UUID versionId; private BlobIdentityDecorator(final BulkObject blob) { this.bucket = blob.getBucket(); @@ -89,7 +89,7 @@ private BlobIdentityDecorator(final BulkObject blob) { this.name = blob.getName(); this.offset = blob.getOffset(); this.physicalPlacement = blob.getPhysicalPlacement(); - this.version = blob.getVersion(); + this.versionId = blob.getVersionId(); } @Override @@ -102,7 +102,7 @@ public boolean equals(final Object o) { if (latest != that.latest) return false; if (length != that.length) return false; if (offset != that.offset) return false; - if (version != that.version) return false; + if (versionId != null ? !versionId.equals(that.versionId) : that.versionId != null) return false; if (bucket != null ? !bucket.equals(that.bucket) : that.bucket != null) return false; if (id != null ? !id.equals(that.id) : that.id != null) return false; if (name != null ? !name.equals(that.name) : that.name != null) return false; @@ -111,7 +111,7 @@ public boolean equals(final Object o) { @Override public int hashCode() { - return java.util.Objects.hash(bucket, id, latest, length, name, offset, physicalPlacement, version); + return java.util.Objects.hash(bucket, id, latest, length, name, offset, physicalPlacement, versionId); } @Override diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/BulkObject.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/BulkObject.java index e2d214aa2..8f321418a 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/BulkObject.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/BulkObject.java @@ -50,8 +50,8 @@ public class BulkObject { @JsonProperty("PhysicalPlacement") private PhysicalPlacement physicalPlacement; - @JacksonXmlProperty(isAttribute = true, localName = "Version") - private long version; + @JacksonXmlProperty(isAttribute = true, localName = "VersionId") + private UUID versionId; // Constructor public BulkObject() { @@ -132,18 +132,18 @@ public void setPhysicalPlacement(final PhysicalPlacement physicalPlacement) { } - public long getVersion() { - return this.version; + public UUID getVersionId() { + return this.versionId; } - public void setVersion(final long version) { - this.version = version; + public void setVersionId(final UUID versionId) { + this.versionId = versionId; } @Override public int hashCode() { - return java.util.Objects.hash(id, inCache, latest, length, name, offset, physicalPlacement, version); + return java.util.Objects.hash(id, inCache, latest, length, name, offset, physicalPlacement, versionId); } @Override @@ -161,7 +161,7 @@ && nullableEquals(this.getInCache(), bulkObject.getInCache()) && nullableEquals(this.getName(), bulkObject.getName()) && this.getOffset() == bulkObject.getOffset() && this.getPhysicalPlacement() == bulkObject.getPhysicalPlacement() - && this.getVersion() == bulkObject.getVersion(); + && nullableEquals(this.getVersionId(), bulkObject.getVersionId()); } /** diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java index 255436d8d..a7d8db4c3 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DataPolicy.java @@ -31,9 +31,6 @@ public class DataPolicy { @JsonProperty("AlwaysMinimizeSpanningAcrossMedia") private boolean alwaysMinimizeSpanningAcrossMedia; - @JsonProperty("AlwaysReplicateDeletes") - private boolean alwaysReplicateDeletes; - @JsonProperty("BlobbingEnabled") private boolean blobbingEnabled; @@ -64,9 +61,6 @@ public class DataPolicy { @JsonProperty("Id") private UUID id; - @JsonProperty("LtfsObjectNamingAllowed") - private boolean ltfsObjectNamingAllowed; - @JsonProperty("MaxVersionsToKeep") private int maxVersionsToKeep; @@ -104,15 +98,6 @@ public void setAlwaysMinimizeSpanningAcrossMedia(final boolean alwaysMinimizeSpa } - public boolean getAlwaysReplicateDeletes() { - return this.alwaysReplicateDeletes; - } - - public void setAlwaysReplicateDeletes(final boolean alwaysReplicateDeletes) { - this.alwaysReplicateDeletes = alwaysReplicateDeletes; - } - - public boolean getBlobbingEnabled() { return this.blobbingEnabled; } @@ -203,15 +188,6 @@ public void setId(final UUID id) { } - public boolean getLtfsObjectNamingAllowed() { - return this.ltfsObjectNamingAllowed; - } - - public void setLtfsObjectNamingAllowed(final boolean ltfsObjectNamingAllowed) { - this.ltfsObjectNamingAllowed = ltfsObjectNamingAllowed; - } - - public int getMaxVersionsToKeep() { return this.maxVersionsToKeep; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedS3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedS3Object.java index 2228e4f59..78e2cea3f 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedS3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedS3Object.java @@ -67,9 +67,6 @@ public class DetailedS3Object { @JsonProperty("Type") private S3ObjectType type; - @JsonProperty("Version") - private long version; - // Constructor public DetailedS3Object() { //pass @@ -202,13 +199,4 @@ public void setType(final S3ObjectType type) { this.type = type; } - - public long getVersion() { - return this.version; - } - - public void setVersion(final long version) { - this.version = version; - } - } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/S3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/S3Object.java index 39ff6894a..bcb4fc37c 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/S3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/S3Object.java @@ -44,9 +44,6 @@ public class S3Object { @JsonProperty("Type") private S3ObjectType type; - @JsonProperty("Version") - private long version; - // Constructor public S3Object() { //pass @@ -108,18 +105,9 @@ public void setType(final S3ObjectType type) { } - public long getVersion() { - return this.version; - } - - public void setVersion(final long version) { - this.version = version; - } - - @Override public int hashCode() { - return Objects.hash(bucketId, name, id, latest, creationDate, type, version); + return Objects.hash(bucketId, name, id, latest, creationDate, type); } @Override @@ -135,7 +123,6 @@ public boolean equals(final Object obj) { && this.id.equals(s3obj.getId()) && this.latest == s3obj.getLatest() && this.name.equals(s3obj.getName()) - && this.type == s3obj.getType() - && this.version == s3obj.getVersion(); + && this.type == s3obj.getType(); } } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3ObjectList.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3ObjectList.java index e6f5d6565..b788855e9 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3ObjectList.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3ObjectList.java @@ -31,15 +31,6 @@ public class Ds3ObjectList { @JsonProperty("Object") private Stream objects; - @JacksonXmlProperty(isAttribute = true, namespace = "", localName = "Priority") - private Priority priority; - - @JacksonXmlProperty(isAttribute = true, namespace = "", localName = "WriteOptimization") - private WriteOptimization writeOptimization; - - @JacksonXmlProperty(isAttribute = true, namespace = "", localName = "ChunkClientProcessingOrderGuarantee") - private JobChunkClientProcessingOrderGuarantee chunkClientProcessingOrderGuarantee; - public Ds3ObjectList() { } @@ -54,28 +45,4 @@ public Iterable getObjects() { public void setObjects(final Iterable objects) { this.objects = StreamSupport.stream(objects.spliterator(), false); } - - public Priority getPriority() { - return priority; - } - - public void setPriority(final Priority priority) { - this.priority = priority; - } - - public WriteOptimization getWriteOptimization() { - return this.writeOptimization; - } - - public void setWriteOptimization(final WriteOptimization writeOptimization) { - this.writeOptimization = writeOptimization; - } - - public JobChunkClientProcessingOrderGuarantee getChunkClientProcessingOrderGuarantee() { - return this.chunkClientProcessingOrderGuarantee; - } - - public void setChunkClientProcessingOrderGuarantee(final JobChunkClientProcessingOrderGuarantee chunkClientProcessingOrderGuarantee) { - this.chunkClientProcessingOrderGuarantee = chunkClientProcessingOrderGuarantee; - } } diff --git a/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java b/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java index 615b0c33a..b075bc0da 100644 --- a/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java +++ b/ds3-sdk/src/test/java/com/spectralogic/ds3client/Ds3Client_Test.java @@ -86,7 +86,7 @@ public class Ds3Client_Test { new Ds3Object("file3") ); - private static final String SIMPLE_BULK_OBJECT_LIST_RESPONSE = ""; + private static final String SIMPLE_BULK_OBJECT_LIST_RESPONSE = ""; @Before public void setTimeZone() { @@ -221,7 +221,7 @@ public void getObjectsSpectraS3() throws IOException, ParseException { queryParams.put("bucket_id", bucketId); final String stringResponse = "" + - "a24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.694Ze37c3ce0-12aa-4f54-87e3-42532aca0e5ebeowulf.txtDATA1a24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.779Zdc628815-c723-4c4e-b68b-5f5d10f38af5sherlock_holmes.txtDATA1a24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.772Z4f6985fd-fbae-4421-ba27-66fdb96187c5tale_of_two_cities.txtDATA1a24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.696Z82c18910-fadb-4461-a152-bf714ae91b55ulysses.txtDATA1"; + "a24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.694Ze37c3ce0-12aa-4f54-87e3-42532aca0e5ebeowulf.txtDATAa24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.779Zdc628815-c723-4c4e-b68b-5f5d10f38af5sherlock_holmes.txtDATAa24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.772Z4f6985fd-fbae-4421-ba27-66fdb96187c5tale_of_two_cities.txtDATAa24d14f3-e2f0-4bfb-ab71-f99d5ef437452015-09-21T20:06:47.696Z82c18910-fadb-4461-a152-bf714ae91b55ulysses.txtDATA"; final ImmutableMap responseHeaders = ImmutableMap.of( "page-truncated", "0", @@ -241,7 +241,6 @@ public void getObjectsSpectraS3() throws IOException, ParseException { beowulf.setId(UUID.fromString("e37c3ce0-12aa-4f54-87e3-42532aca0e5e")); beowulf.setName("beowulf.txt"); beowulf.setType(S3ObjectType.DATA); - beowulf.setVersion(1); final S3Object notBeowulf = new S3Object(); notBeowulf.setBucketId(UUID.fromString("a24d14f3-e2f0-4bfb-ab71-f99d5ef43745")); @@ -249,7 +248,6 @@ public void getObjectsSpectraS3() throws IOException, ParseException { notBeowulf.setId(UUID.fromString("e37c3ce0-12aa-4f54-87e3-42532aca0e5e")); notBeowulf.setName("notBeowulf.txt"); notBeowulf.setType(S3ObjectType.DATA); - notBeowulf.setVersion(1); assertThat(objects.size(), is(4)); assertThat(s3ObjectExists(objects, beowulf), is(true)); @@ -1407,7 +1405,7 @@ public void getPhysicalPlacementForObjectsTest() throws IOException { @Test public void getPhysicalPlacementForObjectsWithFullDetailsTest() throws IOException { - final String responsePayload = ""; + final String responsePayload = ""; final String bucketName = "BucketName"; final Map queryParams = new HashMap<>(); @@ -1445,7 +1443,7 @@ public void verifyPhysicalPlacementForObjectsTest() throws IOException { @Test public void verifyPhysicalPlacementForObjectsWithFullDetailsTest() throws IOException { - final String responsePayload = "false10000t1false5a7bb215-4aff-4806-b217-5fe01ade6a2c2e5b25fc-546e-45b0-951e-8f3d80bb7823PENDING_INSPECTIONfalse20000LTO5false"; + final String responsePayload = "false10000t1false5a7bb215-4aff-4806-b217-5fe01ade6a2c2e5b25fc-546e-45b0-951e-8f3d80bb7823PENDING_INSPECTIONfalse20000LTO5false"; final String bucketName = "BucketName"; final Map queryParams = new HashMap<>(); @@ -1481,7 +1479,7 @@ public void ejectStorageDomainBlobsTest() throws IOException { @Test public void replicatePutJobTest() throws IOException { - final String responsePayload = ""; + final String responsePayload = ""; final String requestPayload = "This is the request payload content"; final String bucketName = "BucketName"; diff --git a/ds3-sdk/src/test/java/com/spectralogic/ds3client/helpers/Metadata_Test.java b/ds3-sdk/src/test/java/com/spectralogic/ds3client/helpers/Metadata_Test.java index 948977f86..4520a141c 100644 --- a/ds3-sdk/src/test/java/com/spectralogic/ds3client/helpers/Metadata_Test.java +++ b/ds3-sdk/src/test/java/com/spectralogic/ds3client/helpers/Metadata_Test.java @@ -63,7 +63,7 @@ public void testThatWeSendMetadataWithEachBlob() throws IOException { blob1.setLatest(true); blob1.setLength(2); blob1.setOffset(0); - blob1.setVersion(1); + blob1.setVersionId(UUID.randomUUID()); blob1.setName(fileName); final BulkObject blob2 = new BulkObject(); @@ -73,7 +73,7 @@ public void testThatWeSendMetadataWithEachBlob() throws IOException { blob2.setLatest(true); blob2.setLength(2); blob2.setOffset(2); - blob2.setVersion(1); + blob2.setVersionId(UUID.randomUUID()); blob2.setName(fileName); final Objects chunk = new Objects(); diff --git a/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java b/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java index 5e360d3df..657e61316 100644 --- a/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java +++ b/ds3-sdk/src/test/java/com/spectralogic/ds3client/serializer/XmlOutput_Test.java @@ -102,17 +102,6 @@ public void toXmlWithVersionId() { assertThat(result, is(expectedString)); } - @Test - public void toXmlWithPriority() { - final String expectedString = ""; - final List objectList = ImmutableList.of(new Ds3Object("file1", 12), new Ds3Object("file2", 5022)).asList(); - final Ds3ObjectList ds3ObjectList = new Ds3ObjectList(objectList); - ds3ObjectList.setPriority(Priority.HIGH); - final String result = XmlOutput.toXml(ds3ObjectList, true); - - assertThat(result, is(expectedString)); - } - @Test(expected = java.io.IOException.class) public void fromXmlWithInvalidElementThrowsExceptionInDevBuild() throws IOException { assumeFalse(XmlOutput.isProductionBuild()); From cb38f09f46f57e4a242083cca2995831f67e01b5 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Fri, 9 Mar 2018 11:54:21 -0700 Subject: [PATCH 07/18] Adding undelete object command --- contract/5_0_x_contract.xml | 32 +++++++ .../com/spectralogic/ds3client/Ds3Client.java | 7 ++ .../spectralogic/ds3client/Ds3ClientImpl.java | 4 + ...UndeleteObjectSpectraS3ResponseParser.java | 49 +++++++++++ .../UndeleteObjectSpectraS3Request.java | 86 +++++++++++++++++++ .../UndeleteObjectSpectraS3Response.java | 36 ++++++++ 6 files changed, 214 insertions(+) create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/UndeleteObjectSpectraS3ResponseParser.java create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Request.java create mode 100644 ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Response.java diff --git a/contract/5_0_x_contract.xml b/contract/5_0_x_contract.xml index 995e50815..2eead26af 100644 --- a/contract/5_0_x_contract.xml +++ b/contract/5_0_x_contract.xml @@ -4602,6 +4602,32 @@ 1.BDA9A7110ADB2C122D0CA705B6B1D6FA + + + + + + + + + + + + + 200 + + + + + + 404 + + + + + + 1.94C075BD3FE76604F8ED084C9B9E4AE5 + @@ -5442,6 +5468,12 @@ + + 400 + + + + 1.2861D535C9E907B2316C6DD326F9C9DB diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java index 67a96a7ac..3aeefa580 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java @@ -1379,6 +1379,13 @@ GetPhysicalPlacementForObjectsSpectraS3Response getPhysicalPlacementForObjectsSp GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Response getPhysicalPlacementForObjectsWithFullDetailsSpectraS3(final GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Request request) throws IOException; + @ResponsePayloadModel("S3Object") + @Action("BULK_MODIFY") + @Resource("OBJECT") + + UndeleteObjectSpectraS3Response undeleteObjectSpectraS3(final UndeleteObjectSpectraS3Request request) + throws IOException; + @ResponsePayloadModel("PhysicalPlacement") @Action("SHOW") @Resource("BUCKET") diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java index 425e4e8d0..e8b752e61 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java @@ -858,6 +858,10 @@ public GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3Response getPhysica return new GetPhysicalPlacementForObjectsWithFullDetailsSpectraS3ResponseParser().response(this.netClient.getResponse(request)); } @Override + public UndeleteObjectSpectraS3Response undeleteObjectSpectraS3(final UndeleteObjectSpectraS3Request request) throws IOException { + return new UndeleteObjectSpectraS3ResponseParser().response(this.netClient.getResponse(request)); + } + @Override public VerifyPhysicalPlacementForObjectsSpectraS3Response verifyPhysicalPlacementForObjectsSpectraS3(final VerifyPhysicalPlacementForObjectsSpectraS3Request request) throws IOException { return new VerifyPhysicalPlacementForObjectsSpectraS3ResponseParser().response(this.netClient.getResponse(request)); } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/UndeleteObjectSpectraS3ResponseParser.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/UndeleteObjectSpectraS3ResponseParser.java new file mode 100644 index 000000000..709f25eb7 --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/parsers/UndeleteObjectSpectraS3ResponseParser.java @@ -0,0 +1,49 @@ +/* + * ****************************************************************************** + * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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. + * **************************************************************************** + */ + +// This code is auto-generated, do not modify +package com.spectralogic.ds3client.commands.parsers; + +import com.spectralogic.ds3client.commands.parsers.interfaces.AbstractResponseParser; +import com.spectralogic.ds3client.commands.parsers.utils.ResponseParserUtils; +import com.spectralogic.ds3client.commands.spectrads3.UndeleteObjectSpectraS3Response; +import com.spectralogic.ds3client.models.S3Object; +import com.spectralogic.ds3client.networking.WebResponse; +import com.spectralogic.ds3client.serializer.XmlOutput; +import java.io.IOException; +import java.io.InputStream; + +public class UndeleteObjectSpectraS3ResponseParser extends AbstractResponseParser { + private final int[] expectedStatusCodes = new int[]{200}; + + @Override + public UndeleteObjectSpectraS3Response parseXmlResponse(final WebResponse response) throws IOException { + final int statusCode = response.getStatusCode(); + if (ResponseParserUtils.validateStatusCode(statusCode, expectedStatusCodes)) { + switch (statusCode) { + case 200: + try (final InputStream inputStream = response.getResponseStream()) { + final S3Object result = XmlOutput.fromXml(inputStream, S3Object.class); + return new UndeleteObjectSpectraS3Response(result, this.getChecksum(), this.getChecksumType()); + } + + default: + assert false: "validateStatusCode should have made it impossible to reach this line"; + } + } + + throw ResponseParserUtils.createFailedRequest(response, expectedStatusCodes); + } +} \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Request.java new file mode 100644 index 000000000..353eea17f --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Request.java @@ -0,0 +1,86 @@ +/* + * ****************************************************************************** + * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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. + * **************************************************************************** + */ + +// This code is auto-generated, do not modify +package com.spectralogic.ds3client.commands.spectrads3; + +import com.spectralogic.ds3client.networking.HttpVerb; +import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; +import com.google.common.net.UrlEscapers; +import java.util.UUID; + +public class UndeleteObjectSpectraS3Request extends AbstractRequest { + + // Variables + + private final String bucketId; + + private final String name; + + private String versionId; + + // Constructor + + + public UndeleteObjectSpectraS3Request(final String bucketId, final String name) { + this.bucketId = bucketId; + this.name = name; + + this.updateQueryParam("bucket_id", bucketId); + + this.updateQueryParam("name", name); + + } + + public UndeleteObjectSpectraS3Request withVersionId(final UUID versionId) { + this.versionId = versionId.toString(); + this.updateQueryParam("version_id", versionId); + return this; + } + + + public UndeleteObjectSpectraS3Request withVersionId(final String versionId) { + this.versionId = versionId; + this.updateQueryParam("version_id", versionId); + return this; + } + + + + @Override + public HttpVerb getVerb() { + return HttpVerb.PUT; + } + + @Override + public String getPath() { + return "/_rest_/object"; + } + + public String getBucketId() { + return this.bucketId; + } + + + public String getName() { + return this.name; + } + + + public String getVersionId() { + return this.versionId; + } + +} \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Response.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Response.java new file mode 100644 index 000000000..a271af52f --- /dev/null +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/UndeleteObjectSpectraS3Response.java @@ -0,0 +1,36 @@ +/* + * ****************************************************************************** + * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. + * This file 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. + * **************************************************************************** + */ + +// This code is auto-generated, do not modify +package com.spectralogic.ds3client.commands.spectrads3; + +import com.spectralogic.ds3client.models.S3Object; +import com.spectralogic.ds3client.models.ChecksumType; +import com.spectralogic.ds3client.commands.interfaces.AbstractResponse; + +public class UndeleteObjectSpectraS3Response extends AbstractResponse { + + private final S3Object s3ObjectResult; + + public UndeleteObjectSpectraS3Response(final S3Object s3ObjectResult, final String checksum, final ChecksumType.Type checksumType) { + super(checksum, checksumType); + this.s3ObjectResult = s3ObjectResult; + } + + public S3Object getS3ObjectResult() { + return this.s3ObjectResult; + } + +} \ No newline at end of file From 1d210abf61c32a86054c7162966e3324faa8c22c Mon Sep 17 00:00:00 2001 From: Ryan Moore Date: Thu, 15 Mar 2018 13:23:34 -0600 Subject: [PATCH 08/18] Getting the 5.0 sdk ready for a beta release --- build.gradle | 12 +++++++----- gradle/wrapper/gradle-wrapper.jar | Bin 54783 -> 54708 bytes gradle/wrapper/gradle-wrapper.properties | 3 +-- gradlew | 6 +++--- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index 1b9e50da4..dc50edb0e 100644 --- a/build.gradle +++ b/build.gradle @@ -23,19 +23,20 @@ buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1' + classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0' + classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2' + classpath "gradle.plugin.net.ossindex:ossindex-gradle-plugin:0.2.0-beta" } } plugins { - id "com.palantir.git-version" version "0.10.0" + id "com.palantir.git-version" version "0.10.1" } allprojects { group = 'com.spectralogic.ds3' - version = '4.0.1' + version = '5.0.0' } subprojects { @@ -43,6 +44,7 @@ subprojects { apply plugin: 'java' apply plugin: 'kotlin' apply plugin: 'findbugs' + apply plugin: 'net.ossindex.audit' sourceCompatibility = JavaVersion.VERSION_1_8 repositories { @@ -62,7 +64,7 @@ subprojects { } task wrapper(type: Wrapper) { - gradleVersion = '4.1' + gradleVersion = '4.6' } project(':ds3-sdk') { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1454129915e967f2239442034b31dae2c3787c80..7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 100644 GIT binary patch delta 17061 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 Date: Thu, 22 Mar 2018 12:48:27 -0600 Subject: [PATCH 09/18] Updating to latest 5.0 API --- .../ClearSuspectBlobDs3TargetsSpectraS3Request.java | 10 ++++++---- .../ds3client/models/SuspectBlobPool.java | 12 ------------ .../ds3client/models/SuspectBlobTape.java | 12 ------------ 3 files changed, 6 insertions(+), 28 deletions(-) diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ClearSuspectBlobDs3TargetsSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ClearSuspectBlobDs3TargetsSpectraS3Request.java index d310a8436..52d39f14d 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ClearSuspectBlobDs3TargetsSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ClearSuspectBlobDs3TargetsSpectraS3Request.java @@ -17,9 +17,11 @@ package com.spectralogic.ds3client.commands.spectrads3; import com.spectralogic.ds3client.networking.HttpVerb; -import com.spectralogic.ds3client.commands.interfaces.AbstractRequest; +import com.spectralogic.ds3client.commands.interfaces.AbstractIdsPayloadRequest; -public class ClearSuspectBlobDs3TargetsSpectraS3Request extends AbstractRequest { +import java.util.List; + +public class ClearSuspectBlobDs3TargetsSpectraS3Request extends AbstractIdsPayloadRequest { // Variables @@ -27,8 +29,8 @@ public class ClearSuspectBlobDs3TargetsSpectraS3Request extends AbstractRequest // Constructor - - public ClearSuspectBlobDs3TargetsSpectraS3Request() { + public ClearSuspectBlobDs3TargetsSpectraS3Request(final List ids) { + super(ids); } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java index 6e9c5c18b..4a304e644 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobPool.java @@ -40,9 +40,6 @@ public class SuspectBlobPool { @JsonProperty("LastAccessed") private Date lastAccessed; - @JsonProperty("ObsoletionId") - private UUID obsoletionId; - @JsonProperty("PoolId") private UUID poolId; @@ -98,15 +95,6 @@ public void setLastAccessed(final Date lastAccessed) { } - public UUID getObsoletionId() { - return this.obsoletionId; - } - - public void setObsoletionId(final UUID obsoletionId) { - this.obsoletionId = obsoletionId; - } - - public UUID getPoolId() { return this.poolId; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java index 8d162caec..1f628d2ba 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/SuspectBlobTape.java @@ -30,9 +30,6 @@ public class SuspectBlobTape { @JsonProperty("Id") private UUID id; - @JsonProperty("ObsoletionId") - private UUID obsoletionId; - @JsonProperty("OrderIndex") private int orderIndex; @@ -64,15 +61,6 @@ public void setId(final UUID id) { } - public UUID getObsoletionId() { - return this.obsoletionId; - } - - public void setObsoletionId(final UUID obsoletionId) { - this.obsoletionId = obsoletionId; - } - - public int getOrderIndex() { return this.orderIndex; } From c84b4873faa7b1fcf69d9e822b57bf36b50fec88 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Tue, 27 Mar 2018 13:11:00 -0600 Subject: [PATCH 10/18] Removing depricated serial id --- .../ModifyTapePartitionSpectraS3Request.java | 14 ++++++++++++++ .../ds3client/models/DetailedTapePartition.java | 12 ------------ .../models/NamedDetailedTapePartition.java | 12 ------------ .../ds3client/models/TapePartition.java | 12 ------------ 4 files changed, 14 insertions(+), 36 deletions(-) diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java index 0dba73b94..2607b4797 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/commands/spectrads3/ModifyTapePartitionSpectraS3Request.java @@ -35,6 +35,8 @@ public class ModifyTapePartitionSpectraS3Request extends AbstractRequest { private Quiesced quiesced; + private String serialNumber; + // Constructor @@ -71,6 +73,13 @@ public ModifyTapePartitionSpectraS3Request withQuiesced(final Quiesced quiesced) } + public ModifyTapePartitionSpectraS3Request withSerialNumber(final String serialNumber) { + this.serialNumber = serialNumber; + this.updateQueryParam("serial_number", serialNumber); + return this; + } + + @Override public HttpVerb getVerb() { @@ -106,4 +115,9 @@ public Quiesced getQuiesced() { return this.quiesced; } + + public String getSerialNumber() { + return this.serialNumber; + } + } \ No newline at end of file diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java index b54a5e473..2fe64a482 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/DetailedTapePartition.java @@ -61,9 +61,6 @@ public class DetailedTapePartition { @JsonProperty("Quiesced") private Quiesced quiesced; - @JsonProperty("SerialId") - private String serialId; - @JsonProperty("SerialNumber") private String serialNumber; @@ -180,15 +177,6 @@ public void setQuiesced(final Quiesced quiesced) { } - public String getSerialId() { - return this.serialId; - } - - public void setSerialId(final String serialId) { - this.serialId = serialId; - } - - public String getSerialNumber() { return this.serialNumber; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java index 757d401f0..46787b2cf 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/NamedDetailedTapePartition.java @@ -61,9 +61,6 @@ public class NamedDetailedTapePartition { @JsonProperty("Quiesced") private Quiesced quiesced; - @JsonProperty("SerialId") - private String serialId; - @JsonProperty("SerialNumber") private String serialNumber; @@ -180,15 +177,6 @@ public void setQuiesced(final Quiesced quiesced) { } - public String getSerialId() { - return this.serialId; - } - - public void setSerialId(final String serialId) { - this.serialId = serialId; - } - - public String getSerialNumber() { return this.serialNumber; } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java index a90f131a4..1def8e1a1 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/TapePartition.java @@ -54,9 +54,6 @@ public class TapePartition { @JsonProperty("Quiesced") private Quiesced quiesced; - @JsonProperty("SerialId") - private String serialId; - @JsonProperty("SerialNumber") private String serialNumber; @@ -160,15 +157,6 @@ public void setQuiesced(final Quiesced quiesced) { } - public String getSerialId() { - return this.serialId; - } - - public void setSerialId(final String serialId) { - this.serialId = serialId; - } - - public String getSerialNumber() { return this.serialNumber; } From bb95fd6430e417cda78ef0bb3ed69cde045bd193 Mon Sep 17 00:00:00 2001 From: Ryan Moore Date: Thu, 29 Mar 2018 11:02:34 -0600 Subject: [PATCH 11/18] Incrementing version number for release --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index dc50edb0e..2b96178cc 100644 --- a/build.gradle +++ b/build.gradle @@ -36,7 +36,7 @@ plugins { allprojects { group = 'com.spectralogic.ds3' - version = '5.0.0' + version = '5.0.1' } subprojects { From 9dad9b4a51560a9e314e0f60c15005d4089a831f Mon Sep 17 00:00:00 2001 From: scribe Date: Fri, 6 Apr 2018 09:19:20 -0600 Subject: [PATCH 12/18] This prevents a null pointer in the case where the versionId is null --- .../java/com/spectralogic/ds3client/models/bulk/Ds3Object.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java index 38e7012e1..a23d4a84e 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.spectralogic.ds3client.serializer.Views; +import java.util.Objects; import java.util.UUID; public class Ds3Object { @@ -126,6 +127,6 @@ public boolean equals(final Object obj) { final Ds3Object ds3Obj = (Ds3Object) obj; return ds3Obj.getName().equals(this.getName()) && ds3Obj.getSize() == this.getSize() && - ds3Obj.getVersionId().equals(this.getVersionId()); + Objects.equals(ds3Obj.versionId, this.getVersionId()); } } From 704de1b058803a2f940852112168168a009473f5 Mon Sep 17 00:00:00 2001 From: scribe Date: Fri, 6 Apr 2018 09:52:00 -0600 Subject: [PATCH 13/18] Now name nullability check too --- .../java/com/spectralogic/ds3client/models/bulk/Ds3Object.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java index a23d4a84e..4c4a831f6 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/models/bulk/Ds3Object.java @@ -125,7 +125,7 @@ public boolean equals(final Object obj) { return false; } final Ds3Object ds3Obj = (Ds3Object) obj; - return ds3Obj.getName().equals(this.getName()) && + return Objects.equals(ds3Obj.getName(), this.getName()) && ds3Obj.getSize() == this.getSize() && Objects.equals(ds3Obj.versionId, this.getVersionId()); } From a608e27dadd03f19a1347bcfbb8d4bdd696f0f3c Mon Sep 17 00:00:00 2001 From: Ryan Moore Date: Tue, 1 May 2018 15:57:28 -0600 Subject: [PATCH 14/18] Reving version to 5.0.2 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 2b96178cc..97c871e71 100644 --- a/build.gradle +++ b/build.gradle @@ -36,7 +36,7 @@ plugins { allprojects { group = 'com.spectralogic.ds3' - version = '5.0.1' + version = '5.0.2' } subprojects { From aca0e95d4d7211ddbaf32b52b6828f59a56813f9 Mon Sep 17 00:00:00 2001 From: Ryan Moore Date: Tue, 1 May 2018 15:59:31 -0600 Subject: [PATCH 15/18] Updating gradle to the latest version --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 54708 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 97c871e71..6c7b9012c 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,7 @@ subprojects { } task wrapper(type: Wrapper) { - gradleVersion = '4.6' + gradleVersion = '4.7' } project(':ds3-sdk') { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7a3265ee94c0ab25cf079ac8ccdf87f41d455d42..f6b961fd5a86aa5fbfe90f707c3138408be7c718 100644 GIT binary patch delta 15814 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ea720f986..16d28051c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip From 61079bb39a91ac4942bf5f5320422f19ac2dabd3 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Thu, 3 May 2018 15:16:52 -0600 Subject: [PATCH 16/18] Updating get job transfer methods to add version id when getting object --- .../ds3client/integration/Util.java | 22 ++++++-- .../integration/VersionedObject_Test.java | 50 +++++++++++++++++++ .../GetJobPartialBlobTransferMethod.java | 1 + .../GetJobTransferMethod.java | 2 + 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java index 8f6f54212..70d8173a1 100644 --- a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java +++ b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java @@ -18,13 +18,11 @@ import com.google.common.collect.ImmutableList; import com.spectralogic.ds3client.Ds3Client; import com.spectralogic.ds3client.Ds3ClientBuilder; -import com.spectralogic.ds3client.commands.spectrads3.CancelJobSpectraS3Request; -import com.spectralogic.ds3client.commands.spectrads3.GetJobsSpectraS3Request; -import com.spectralogic.ds3client.commands.spectrads3.GetJobsSpectraS3Response; -import com.spectralogic.ds3client.commands.spectrads3.GetSystemInformationSpectraS3Request; +import com.spectralogic.ds3client.commands.spectrads3.*; import com.spectralogic.ds3client.helpers.DeleteBucket; import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; import com.spectralogic.ds3client.helpers.channelbuilders.PrefixAdderObjectChannelBuilder; +import com.spectralogic.ds3client.models.Bucket; import com.spectralogic.ds3client.models.Job; import com.spectralogic.ds3client.models.JobStatus; import com.spectralogic.ds3client.models.bulk.Ds3Object; @@ -65,6 +63,22 @@ public static Ds3Client insecureFromEnv() { return builder.build(); } + /** + * Goes through all buckets on a BP and attempts to delete them and all their contents. It cancels all active jobs + * associated with this bucket. Created for cleaning up after cascade failures in functional tests. + * + * USE ONLY WHEN DELETING ALL BUCKETS AND ALL CONTENT IS YOUR GOAL. + */ + public static void forceCleanupBucketsOnBP(final Ds3Client client) throws IOException { + final GetBucketsSpectraS3Request request = new GetBucketsSpectraS3Request(); + final GetBucketsSpectraS3Response response = client.getBucketsSpectraS3(request); + + for (Bucket bucket : response.getBucketListResult().getBuckets()) { + cancelAllJobsForBucket(client, bucket.getName()); + client.deleteBucketSpectraS3(new DeleteBucketSpectraS3Request(bucket.getName()).withForce(true)); + } + } + public static void assumeVersion1_2(final Ds3Client client) throws IOException { final int majorVersion = Integer.parseInt(client.getSystemInformationSpectraS3( new GetSystemInformationSpectraS3Request()).getSystemInformationResult().getBuildInformation().getVersion().split("\\.")[0]); diff --git a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java index e15c4ac85..b3abbdc33 100644 --- a/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java +++ b/ds3-sdk-integration/src/test/java/com/spectralogic/ds3client/integration/VersionedObject_Test.java @@ -22,19 +22,26 @@ import com.spectralogic.ds3client.commands.spectrads3.GetBulkJobSpectraS3Request; import com.spectralogic.ds3client.commands.spectrads3.StageObjectsJobSpectraS3Request; import com.spectralogic.ds3client.helpers.Ds3ClientHelpers; +import com.spectralogic.ds3client.helpers.FileObjectGetter; import com.spectralogic.ds3client.integration.test.helpers.TempStorageIds; import com.spectralogic.ds3client.integration.test.helpers.TempStorageUtil; import com.spectralogic.ds3client.models.ChecksumType; import com.spectralogic.ds3client.models.VersioningLevel; import com.spectralogic.ds3client.models.bulk.Ds3Object; +import com.spectralogic.ds3client.utils.ResourceUtils; +import org.apache.commons.io.FileUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; import java.io.IOException; import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; @@ -42,6 +49,7 @@ import static com.spectralogic.ds3client.integration.Util.*; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; public class VersionedObject_Test { @@ -138,4 +146,46 @@ public void stageObjectsWithVersioning() throws IOException, URISyntaxException CLIENT.deleteBucketSpectraS3(new DeleteBucketSpectraS3Request(TEST_ENV_NAME).withForce(true)); } } + + @Test + public void getObjectsWithVersioningUsingHelpers() throws IOException, URISyntaxException, InterruptedException { + // Create temp directory for files we will retrieve from bp + final Path tempDirectory = Files.createTempDirectory(Paths.get("."), null); + + try { + HELPERS.ensureBucketExists(TEST_ENV_NAME, envDataPolicyId); + final String objectName = "object_with_versions"; + + // Put different content for object twice + loadTestBook(CLIENT, BOOKS[0], objectName, TEST_ENV_NAME); // putting beowulf as content + loadTestBook(CLIENT, BOOKS[1], objectName, TEST_ENV_NAME); // putting sherlock holmes as content + + // Get the version of the objects + final GetBucketRequest getBucketRequest = new GetBucketRequest(TEST_ENV_NAME).withVersions(true); + final GetBucketResponse getBucketResponse = CLIENT.getBucket(getBucketRequest); + + assertThat(getBucketResponse.getListBucketResult().getObjects().size(), is(0)); + assertThat(getBucketResponse.getListBucketResult().getVersionedObjects().size(), is(2)); + + // Create bulk get job with the oldest version of the object + final List objects = getBucketResponse.getListBucketResult().getVersionedObjects().stream() + .filter(obj -> !obj.getIsLatest()) // filters out the latest version of the object + .map(obj -> new Ds3Object(obj.getKey(), obj.getVersionId())) + .collect(Collectors.toList()); + + final Ds3ClientHelpers.Job readJob = HELPERS.startReadJob(TEST_ENV_NAME, objects); + + readJob.transfer(new FileObjectGetter(tempDirectory)); + + // Check content is beowulf, which was the first version of content + final File originalFile = ResourceUtils.loadFileResource(RESOURCE_BASE_NAME + BOOKS[0]).toFile(); + final File fileCopiedFromBP = Paths.get(tempDirectory.toString(), objectName).toFile(); + assertTrue(FileUtils.contentEquals(originalFile, fileCopiedFromBP)); + + } finally { + cancelAllJobsForBucket(CLIENT, TEST_ENV_NAME); + deleteAllContents(CLIENT, TEST_ENV_NAME); + FileUtils.deleteDirectory(tempDirectory.toFile()); + } + } } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java index dc8bc3b56..e4269d24f 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java @@ -92,6 +92,7 @@ private GetObjectRequest makeGetObjectRequest(final SeekableByteChannel seekable jobId, blob.getOffset()); + getObjectRequest.withVersionId(blob.getVersionId()); getObjectRequest.withByteRanges(blobRanges); return getObjectRequest; diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java index 3a174145d..bf500a106 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java @@ -86,6 +86,8 @@ private GetObjectRequest makeGetObjectRequest(final SeekableByteChannel seekable jobId, blob.getOffset()); + getObjectRequest.withVersionId(jobPart.getBlob().getVersionId()); + final ImmutableCollection rangesForBlob = StrategyUtils.getRangesForBlob(rangesForBlobs, blob); if (rangesForBlob != null) { From 0edafb60ec1297d41008708275a1ad9751a7e371 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Fri, 4 May 2018 14:03:28 -0600 Subject: [PATCH 17/18] Checking if version id is null --- .../java/com/spectralogic/ds3client/integration/Util.java | 2 +- .../transferstrategy/GetJobPartialBlobTransferMethod.java | 4 +++- .../strategy/transferstrategy/GetJobTransferMethod.java | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java index 70d8173a1..540a06c86 100644 --- a/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java +++ b/ds3-sdk-integration/src/main/java/com/spectralogic/ds3client/integration/Util.java @@ -73,7 +73,7 @@ public static void forceCleanupBucketsOnBP(final Ds3Client client) throws IOExce final GetBucketsSpectraS3Request request = new GetBucketsSpectraS3Request(); final GetBucketsSpectraS3Response response = client.getBucketsSpectraS3(request); - for (Bucket bucket : response.getBucketListResult().getBuckets()) { + for (final Bucket bucket : response.getBucketListResult().getBuckets()) { cancelAllJobsForBucket(client, bucket.getName()); client.deleteBucketSpectraS3(new DeleteBucketSpectraS3Request(bucket.getName()).withForce(true)); } diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java index e4269d24f..3fa3c9eab 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobPartialBlobTransferMethod.java @@ -92,7 +92,9 @@ private GetObjectRequest makeGetObjectRequest(final SeekableByteChannel seekable jobId, blob.getOffset()); - getObjectRequest.withVersionId(blob.getVersionId()); + if (blob.getVersionId() != null) { + getObjectRequest.withVersionId(blob.getVersionId()); + } getObjectRequest.withByteRanges(blobRanges); return getObjectRequest; diff --git a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java index bf500a106..3a7c8c1d5 100644 --- a/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java +++ b/ds3-sdk/src/main/java/com/spectralogic/ds3client/helpers/strategy/transferstrategy/GetJobTransferMethod.java @@ -86,7 +86,9 @@ private GetObjectRequest makeGetObjectRequest(final SeekableByteChannel seekable jobId, blob.getOffset()); - getObjectRequest.withVersionId(jobPart.getBlob().getVersionId()); + if (jobPart.getBlob().getVersionId() != null) { + getObjectRequest.withVersionId(jobPart.getBlob().getVersionId()); + } final ImmutableCollection rangesForBlob = StrategyUtils.getRangesForBlob(rangesForBlobs, blob); From 3cc8950d58a14ea9e83b1ec28f7a9b8bbdfd95b3 Mon Sep 17 00:00:00 2001 From: Ryan Moore Date: Tue, 8 May 2018 13:21:31 -0600 Subject: [PATCH 18/18] Updating version to 5.0.3 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6c7b9012c..218f06963 100644 --- a/build.gradle +++ b/build.gradle @@ -36,7 +36,7 @@ plugins { allprojects { group = 'com.spectralogic.ds3' - version = '5.0.2' + version = '5.0.3' } subprojects {