From 467d04917f46bb5deb3df3e6ba8083ebeae8c8a7 Mon Sep 17 00:00:00 2001 From: Rachel Tucker Date: Wed, 14 Feb 2018 15:28:30 -0700 Subject: [PATCH 1/5] 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 2/5] 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 3/5] 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 4/5] 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 5/5] 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 {