Skip to content

Commit 6d27e59

Browse files
authored
Merge pull request #58 from RachelTucker/5_0_autogen
5.0 API
2 parents a984d37 + a60d24a commit 6d27e59

File tree

84 files changed

+704
-241
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+704
-241
lines changed

ds3/ds3Client_test.go

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -386,10 +386,10 @@ func TestGetObjectRange(t *testing.T) {
386386

387387
func TestGetObjectsDetailsSpectraS3(t *testing.T) {
388388
bucketId := "a24d14f3-e2f0-4bfb-ab71-f99d5ef43745"
389-
stringResponse := "<Data><S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.694Z</CreationDate><Id>e37c3ce0-12aa-4f54-87e3-42532aca0e5e</Id><Name>beowulf.txt</Name><Type>DATA</Type><Version>1</Version></S3Object>" +
390-
"<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.779Z</CreationDate><Id>dc628815-c723-4c4e-b68b-5f5d10f38af5</Id><Name>sherlock_holmes.txt</Name><Type>DATA</Type><Version>1</Version></S3Object>" +
391-
"<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.772Z</CreationDate><Id>4f6985fd-fbae-4421-ba27-66fdb96187c5</Id><Name>tale_of_two_cities.txt</Name><Type>DATA</Type><Version>1</Version></S3Object>" +
392-
"<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.696Z</CreationDate><Id>82c18910-fadb-4461-a152-bf714ae91b55</Id><Name>ulysses.txt</Name><Type>DATA</Type><Version>1</Version></S3Object></Data>"
389+
stringResponse := "<Data><S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.694Z</CreationDate><Id>e37c3ce0-12aa-4f54-87e3-42532aca0e5e</Id><Name>beowulf.txt</Name><Type>DATA</Type></S3Object>" +
390+
"<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.779Z</CreationDate><Id>dc628815-c723-4c4e-b68b-5f5d10f38af5</Id><Name>sherlock_holmes.txt</Name><Type>DATA</Type></S3Object>" +
391+
"<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.772Z</CreationDate><Id>4f6985fd-fbae-4421-ba27-66fdb96187c5</Id><Name>tale_of_two_cities.txt</Name><Type>DATA</Type></S3Object>" +
392+
"<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.696Z</CreationDate><Id>82c18910-fadb-4461-a152-bf714ae91b55</Id><Name>ulysses.txt</Name><Type>DATA</Type></S3Object></Data>"
393393

394394
request := models.NewGetObjectsDetailsSpectraS3Request().WithBucketId(bucketId)
395395

@@ -428,7 +428,6 @@ func TestGetObjectsDetailsSpectraS3(t *testing.T) {
428428
if object.Type != models.S3_OBJECT_TYPE_DATA {
429429
t.Fatalf("Expected type of '%d' but was '%d'.", models.S3_OBJECT_TYPE_DATA, object.Type)
430430
}
431-
ds3Testing.AssertInt64(t, "Version", 1, object.Version)
432431
}
433432
}
434433

@@ -1528,6 +1527,27 @@ func TestClearSuspectBlobS3TargetsSpectraS3(t *testing.T) {
15281527
}
15291528
}
15301529

1530+
1531+
func TestClearSuspectBlobDs3TargetsSpectraS3(t *testing.T) {
1532+
expectedRequest := "<Ids><Id>id1</Id><Id>id2</Id><Id>id3</Id></Ids>"
1533+
1534+
// Create and run the mocked client.
1535+
ids := []string {"id1", "id2", "id3"}
1536+
1537+
response, err := mockedClient(t).
1538+
Expecting(HTTP_VERB_DELETE, "/_rest_/suspect_blob_ds3_target", &url.Values{}, &http.Header{}, &expectedRequest).
1539+
Returning(204, "", nil).
1540+
ClearSuspectBlobDs3TargetsSpectraS3(models.NewClearSuspectBlobDs3TargetsSpectraS3Request(ids))
1541+
1542+
// Check the error result.
1543+
ds3Testing.AssertNilError(t, err)
1544+
1545+
// Check the response value.
1546+
if response == nil {
1547+
t.Fatalf("Response was unexpectedly nil.")
1548+
}
1549+
}
1550+
15311551
func TestClearSuspectBlobTapesSpectraS3(t *testing.T) {
15321552
expectedRequest := "<Ids><Id>id1</Id><Id>id2</Id><Id>id3</Id></Ids>"
15331553

@@ -1560,13 +1580,13 @@ func TestEjectStorageDomainBlobsSpectraS3(t *testing.T) {
15601580
"operation": []string{"eject"},
15611581
"blobs": []string{""},
15621582
"bucket_id": []string{bucketId},
1563-
"storage_domain_id": []string{storageDomainId},
1583+
"storage_domain": []string{storageDomainId},
15641584
}
15651585

15661586
response, err := mockedClient(t).
15671587
Expecting(HTTP_VERB_PUT, "/_rest_/tape", qp, &http.Header{}, &expectedRequest).
15681588
Returning(204, "", nil).
1569-
EjectStorageDomainBlobsSpectraS3(models.NewEjectStorageDomainBlobsSpectraS3Request(bucketId, objectNames, storageDomainId))
1589+
EjectStorageDomainBlobsSpectraS3(models.NewEjectStorageDomainBlobsSpectraS3Request(bucketId, storageDomainId, objectNames))
15701590

15711591
// Check the error result.
15721592
ds3Testing.AssertNilError(t, err)
@@ -1640,7 +1660,7 @@ func TestGetBlobsOnTapeSpectraS3(t *testing.T) {
16401660
type getBlobsTest func(*Client) (models.BulkObjectList, error)
16411661

16421662
func runGetBlobsTest(t *testing.T, path string, callToTest getBlobsTest) {
1643-
expectedResponse := "<Data><Object Bucket=\"default_bucket_name\" Id=\"1bd77dbf-500a-45a1-86ac-d065f026882c\" Latest=\"true\" Length=\"10\" Name=\"obj1\" Offset=\"0\" Version=\"1\"/><Object Bucket=\"default_bucket_name\" Id=\"9afa66e7-3f5a-4913-bae2-ba7c86e4c4f7\" Latest=\"true\" Length=\"10\" Name=\"obj2\" Offset=\"0\" Version=\"1\"/></Data>"
1663+
expectedResponse := "<Data><Object Bucket=\"default_bucket_name\" Id=\"1bd77dbf-500a-45a1-86ac-d065f026882c\" Latest=\"true\" Length=\"10\" Name=\"obj1\" Offset=\"0\" /><Object Bucket=\"default_bucket_name\" Id=\"9afa66e7-3f5a-4913-bae2-ba7c86e4c4f7\" Latest=\"true\" Length=\"10\" Name=\"obj2\" Offset=\"0\" /></Data>"
16441664

16451665
// Create and run the mocked client.
16461666
qp := &url.Values{ "operation": []string{"get_physical_placement"} }
@@ -1662,7 +1682,6 @@ func runGetBlobsTest(t *testing.T, path string, callToTest getBlobsTest) {
16621682
ds3Testing.AssertInt64(t, "Length", 10, obj1.Length)
16631683
ds3Testing.AssertNonNilStringPtr(t, "Name", "obj1", obj1.Name)
16641684
ds3Testing.AssertInt64(t, "Offset", 0, obj1.Offset)
1665-
ds3Testing.AssertInt64(t, "Version", 1, obj1.Version)
16661685
if obj1.PhysicalPlacement != nil {
16671686
t.Fatalf("Expected nil Physical Placement, but was '%v'.", obj1.PhysicalPlacement)
16681687
}
@@ -1675,7 +1694,6 @@ func runGetBlobsTest(t *testing.T, path string, callToTest getBlobsTest) {
16751694
ds3Testing.AssertInt64(t, "Length", 10, obj2.Length)
16761695
ds3Testing.AssertNonNilStringPtr(t, "Name", "obj2", obj2.Name)
16771696
ds3Testing.AssertInt64(t, "Offset", 0, obj2.Offset)
1678-
ds3Testing.AssertInt64(t, "Version", 1, obj2.Version)
16791697
if obj2.PhysicalPlacement != nil {
16801698
t.Fatalf("Expected nil Physical Placement, but was '%v'.", obj2.PhysicalPlacement)
16811699
}
@@ -1707,7 +1725,7 @@ func TestGetPhysicalPlacementForObjectsSpectraS3(t *testing.T) {
17071725

17081726
func TestGetPhysicalPlacementForObjectsWithFullDetailsSpectraS3(t *testing.T) {
17091727
expectedRequest := "<Objects><Object Name=\"obj1\"></Object><Object Name=\"obj2\"></Object><Object Name=\"obj3\"></Object></Objects>"
1710-
responsePayload := "<Data><Object Bucket=\"b1\" Id=\"a2897bbd-3e0b-4c0f-83d7-29e1e7669bdd\" InCache=\"false\" Latest=\"true\" Length=\"10\" Name=\"o4\" Offset=\"0\" Version=\"1\"><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes/></PhysicalPlacement></Object></Data>"
1728+
responsePayload := "<Data><Object Bucket=\"b1\" Id=\"a2897bbd-3e0b-4c0f-83d7-29e1e7669bdd\" InCache=\"false\" Latest=\"true\" Length=\"10\" Name=\"o4\" Offset=\"0\" ><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes/></PhysicalPlacement></Object></Data>"
17111729

17121730
// Create and run the mocked client.
17131731
bucketName := "BucketName"
@@ -1807,7 +1825,7 @@ func runMarkSuspectBlobTest(t *testing.T, path string, callToTest markSuspectBlo
18071825

18081826
func TestVerifyPhysicalPlacementForObjectsSpectraS3(t *testing.T) {
18091827
expectedRequest := "<Objects><Object Name=\"o1\"></Object></Objects>"
1810-
responsePayload := "<Data><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>48d30ecb-84f1-4721-9832-7aa165a1dd77</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>76343269-c32a-4cb0-aec4-57a9dccce6ea</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><StorageDomainId/><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></Data>"
1828+
responsePayload := "<Data><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>48d30ecb-84f1-4721-9832-7aa165a1dd77</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>76343269-c32a-4cb0-aec4-57a9dccce6ea</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></Data>"
18111829

18121830
// Create and run the mocked client.
18131831
bucketName := "b1"
@@ -1832,7 +1850,7 @@ func TestVerifyPhysicalPlacementForObjectsSpectraS3(t *testing.T) {
18321850

18331851
func TestVerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3(t *testing.T) {
18341852
expectedRequest := "<Objects><Object Name=\"o1\"></Object></Objects>"
1835-
responsePayload := "<Data><Object Bucket=\"b1\" Id=\"ad5bfa96-8356-42e5-97c7-091780f9d2a7\" InCache=\"false\" Latest=\"true\" Length=\"10\" Name=\"o1\" Offset=\"0\" Version=\"1\"><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>3514700d-4d4f-4e64-8ccd-20750b5514fd</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>dc681797-927a-4eb0-9652-d19d06534e50</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><StorageDomainId/><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></PhysicalPlacement></Object></Data>"
1853+
responsePayload := "<Data><Object Bucket=\"b1\" Id=\"ad5bfa96-8356-42e5-97c7-091780f9d2a7\" InCache=\"false\" Latest=\"true\" Length=\"10\" Name=\"o1\" Offset=\"0\" ><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>3514700d-4d4f-4e64-8ccd-20750b5514fd</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>dc681797-927a-4eb0-9652-d19d06534e50</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></PhysicalPlacement></Object></Data>"
18361854

18371855
// Create and run the mocked client.
18381856
bucketName := "b1"
@@ -1865,7 +1883,6 @@ func TestVerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3(t *testing.T)
18651883
ds3Testing.AssertInt64(t, "Length", 10, object.Length)
18661884
ds3Testing.AssertNonNilStringPtr(t, "Name", "o1", object.Name)
18671885
ds3Testing.AssertInt64(t, "Offset", 0, object.Offset)
1868-
ds3Testing.AssertInt64(t, "Version", 1, object.Version)
18691886
if object.PhysicalPlacement == nil {
18701887
t.Fatal("Expected PhysicalPlacement to not be nil")
18711888
}
@@ -1902,7 +1919,7 @@ func TestVerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3(t *testing.T)
19021919
if tape.State != models.TAPE_STATE_PENDING_INSPECTION {
19031920
t.Fatalf("Expected tape state 'TAPE_STATE_PENDING_INSPECTION' but got '%s'.", tape.State.String())
19041921
}
1905-
ds3Testing.AssertStringPtrIsNil(t, "StorageDomainId", tape.StorageDomainId)
1922+
ds3Testing.AssertStringPtrIsNil(t, "StorageDomainId", tape.StorageDomainMemberId)
19061923
ds3Testing.AssertBool(t, "TakeOwnershipPending", false, tape.TakeOwnershipPending)
19071924
ds3Testing.AssertNonNilInt64Ptr(t, "TotalRawCapacity", 20000, tape.TotalRawCapacity)
19081925
ds3Testing.AssertString(t, "TapeType", "LTO5", tape.Type)
@@ -1939,3 +1956,33 @@ func TestHeadObject(t *testing.T) {
19391956
ds3Testing.AssertString(t, "checksum at offset '10485760'", "965Aa0/n8DlO1IwXYFh4bg==", response.BlobChecksums[10485760])
19401957
ds3Testing.AssertString(t, "checksum at offset '20971520'", "iV2OqJaXJ/jmqgRSb1HmFA==", response.BlobChecksums[20971520])
19411958
}
1959+
1960+
func TestStageObjectsJob(t *testing.T) {
1961+
expectedRequest := "<Objects><Object Name=\"o1\"></Object><Object Name=\"o2\" VersionId=\"v2\"></Object><Object Name=\"o3\" Length=\"10\" Offset=\"20\" VersionId=\"v3\"></Object></Objects>"
1962+
responsePayload := "<MasterObjectList><Objects><Object Name='file2' Length='1202'/><Object Name='file1' Length='256'/><Object Name='file3' Length='2523'/></Objects></MasterObjectList>"
1963+
1964+
// Create and run the mocked client.
1965+
bucketName := "b1"
1966+
objects := []models.Ds3GetObject {
1967+
models.NewDs3GetObject("o1"),
1968+
models.NewDs3GetObjectVersion("o2", "v2"),
1969+
models.NewPartialDs3GetObjectVersion("o3", 10, 20, "v3"),
1970+
}
1971+
1972+
qp := &url.Values{ "operation": []string{"start_bulk_stage"} }
1973+
1974+
response, err := mockedClient(t).
1975+
Expecting(HTTP_VERB_PUT, "/_rest_/bucket/" + bucketName, qp, &http.Header{}, &expectedRequest).
1976+
Returning(200, responsePayload, nil).
1977+
StageObjectsJobSpectraS3(models.NewStageObjectsJobSpectraS3RequestWithPartialObjects(bucketName, objects))
1978+
1979+
// Check the error result.
1980+
ds3Testing.AssertNilError(t, err)
1981+
1982+
// Check the response value.
1983+
if response == nil {
1984+
t.Fatalf("Response was unexpectedly nil.")
1985+
}
1986+
ds3Testing.AssertInt(t, "Number of objects", 1, len(response.MasterObjectList.Objects))
1987+
ds3Testing.AssertInt(t, "Number of blobs", 3, len(response.MasterObjectList.Objects[0].Objects))
1988+
}

ds3/ds3Deletes.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func (client *Client) DeleteObject(request *models.DeleteObjectRequest) (*models
7070
httpRequest, err := networking.NewHttpRequestBuilder().
7171
WithHttpVerb(HTTP_VERB_DELETE).
7272
WithPath("/" + request.BucketName + "/" + request.ObjectName).
73-
WithOptionalVoidQueryParam("roll_back", request.RollBack).
73+
WithOptionalQueryParam("version_id", request.VersionId).
7474
Build(client.connectionInfo)
7575

7676
if err != nil {
@@ -1016,7 +1016,6 @@ func (client *Client) DeleteFolderRecursivelySpectraS3(request *models.DeleteFol
10161016
WithPath("/_rest_/folder/" + request.Folder).
10171017
WithQueryParam("bucket_id", request.BucketId).
10181018
WithQueryParam("recursive", "").
1019-
WithOptionalVoidQueryParam("roll_back", request.RollBack).
10201019
Build(client.connectionInfo)
10211020

10221021
if err != nil {

0 commit comments

Comments
 (0)