Skip to content

Commit 30c703f

Browse files
authored
[ACR] uploadBlob updates (Azure#25189)
1 parent 7c2fab9 commit 30c703f

File tree

9 files changed

+43
-16
lines changed

9 files changed

+43
-16
lines changed

sdk/containerregistry/container-registry/review/container-registry.api.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ export interface OciDescriptor {
276276
annotations?: OciAnnotations;
277277
digest: string;
278278
mediaType: string;
279-
size: number;
279+
sizeInBytes: number;
280280
urls?: string[];
281281
}
282282

@@ -343,6 +343,7 @@ export interface UploadBlobOptions extends OperationOptions {
343343
// @public
344344
export interface UploadBlobResult {
345345
digest: string;
346+
sizeInBytes: number;
346347
}
347348

348349
// @public

sdk/containerregistry/container-registry/samples-dev/uploadImage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ async function main() {
3333
schemaVersion: 2,
3434
config: {
3535
digest: uploadConfigResult.digest,
36-
size: config.byteLength,
36+
sizeInBytes: config.byteLength,
3737
mediaType: "application/vnd.oci.image.config.v1+json",
3838
},
3939
layers: [
4040
{
4141
digest: uploadLayerResult.digest,
42-
size: layer.byteLength,
42+
sizeInBytes: layer.byteLength,
4343
mediaType: "application/vnd.oci.image.layer.v1.tar",
4444
},
4545
],

sdk/containerregistry/container-registry/samples-dev/uploadManifest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ async function main() {
4444
config: {
4545
mediaType: "application/vnd.oci.image.config.v1+json",
4646
digest: configDigest,
47-
size: config.byteLength,
47+
sizeInBytes: config.byteLength,
4848
},
4949
layers: [
5050
{
5151
mediaType: "application/vnd.oci.image.layer.v1.tar",
5252
digest: layerDigest,
53-
size: layer.byteLength,
53+
sizeInBytes: layer.byteLength,
5454
annotations: {
5555
title: "artifact.txt",
5656
},

sdk/containerregistry/container-registry/src/blob/containerRegistryBlobClient.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,13 +359,18 @@ export class ContainerRegistryBlobClient {
359359
const chunks = readChunksFromStream(blobStream, CHUNK_SIZE);
360360
const hash = crypto.createHash("sha256");
361361

362+
let bytesUploaded = 0;
363+
362364
for await (const chunk of chunks) {
363365
hash.write(chunk);
364366
const result = await this.client.containerRegistryBlob.uploadChunk(
365367
location,
366368
chunk,
367369
updatedOptions
368370
);
371+
372+
bytesUploaded += chunk.byteLength;
373+
369374
assertHasProperty(result, "location");
370375
location = result.location.substring(1);
371376
}
@@ -382,7 +387,7 @@ export class ContainerRegistryBlobClient {
382387
);
383388
}
384389

385-
return { digest };
390+
return { digest, sizeInBytes: bytesUploaded };
386391
}
387392
);
388393
}

sdk/containerregistry/container-registry/src/blob/models.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ export interface UploadBlobResult {
2626
* The digest of the uploaded blob.
2727
*/
2828
digest: string;
29+
30+
/**
31+
* The size of the uploaded blob in bytes.
32+
*/
33+
sizeInBytes: number;
2934
}
3035

3136
/**
@@ -93,7 +98,7 @@ export interface OciDescriptor {
9398
/** Layer media type */
9499
mediaType: string;
95100
/** Layer size */
96-
size: number;
101+
sizeInBytes: number;
97102
/** Layer digest */
98103
digest: string;
99104
/** Specifies a list of URIs from which this object may be downloaded. */

sdk/containerregistry/container-registry/src/generated/models/index.ts

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/containerregistry/container-registry/src/generated/models/mappers.ts

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/containerregistry/container-registry/swagger/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,13 @@ directive:
204204
}
205205
};
206206
```
207+
208+
# Rename Descriptor.size to sizeInBytes
209+
210+
```yaml
211+
directive:
212+
from: swagger-document
213+
where: $.definitions.Descriptor
214+
transform: >
215+
$.properties.size["x-ms-client-name"] = "sizeInBytes";
216+
```

sdk/containerregistry/container-registry/test/public/containerRegistryBlobClient.spec.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ versionsToTest(serviceVersions, {}, (serviceVersion, onVersions): void => {
6767
config: {
6868
mediaType: "application/vnd.oci.image.config.v1+json",
6969
digest: "sha256:d25b42d3dbad5361ed2d909624d899e7254a822c9a632b582ebd3a44f9b0dbc8",
70-
size: 171,
70+
sizeInBytes: 171,
7171
},
7272
layers: [
7373
{
7474
mediaType: "application/vnd.oci.image.layer.v1.tar",
7575
digest: "sha256:654b93f61054e4ce90ed203bb8d556a6200d5f906cf3eca0620738d6dc18cbed",
76-
size: 28,
76+
sizeInBytes: 28,
7777
annotations: {
7878
title: "artifact.txt",
7979
},
@@ -225,11 +225,12 @@ versionsToTest(serviceVersions, {}, (serviceVersion, onVersions): void => {
225225
const blob = fs.createReadStream(
226226
"test/data/oci-artifact/654b93f61054e4ce90ed203bb8d556a6200d5f906cf3eca0620738d6dc18cbed"
227227
);
228-
const { digest } = await client.uploadBlob(blob);
228+
const { digest, sizeInBytes } = await client.uploadBlob(blob);
229229
const downloadResult = await client.downloadBlob(
230230
"sha256:654b93f61054e4ce90ed203bb8d556a6200d5f906cf3eca0620738d6dc18cbed"
231231
);
232232
assert.equal(digest, downloadResult.digest);
233+
assert.equal(sizeInBytes, 28);
233234
});
234235

235236
it("can upload blob from a buffer", async () => {
@@ -246,8 +247,10 @@ versionsToTest(serviceVersions, {}, (serviceVersion, onVersions): void => {
246247
}
247248

248249
// 64 MiB plus extra offset to have a smaller chunk at the end
249-
const bigBlob = Buffer.alloc(64 * 1024 * 1024 + 321, 0x00);
250-
const { digest } = await client.uploadBlob(Readable.from(bigBlob));
250+
const bufferSize = 64 * 1024 * 1024 + 321;
251+
const bigBlob = Buffer.alloc(bufferSize, 0x00);
252+
const { digest, sizeInBytes } = await client.uploadBlob(Readable.from(bigBlob));
253+
assert.equal(sizeInBytes, bufferSize);
251254
await client.deleteBlob(digest);
252255
});
253256

@@ -263,8 +266,11 @@ versionsToTest(serviceVersions, {}, (serviceVersion, onVersions): void => {
263266
}
264267

265268
// 64 MiB exactly
266-
const bigBlob = Buffer.alloc(64 * 1024 * 1024, 0x00);
267-
const { digest } = await client.uploadBlob(Readable.from(bigBlob));
269+
const bufferSize = 64 * 1024 * 1024;
270+
271+
const bigBlob = Buffer.alloc(bufferSize, 0x00);
272+
const { digest, sizeInBytes } = await client.uploadBlob(Readable.from(bigBlob));
273+
assert.equal(sizeInBytes, bufferSize);
268274
await client.deleteBlob(digest);
269275
});
270276
});

0 commit comments

Comments
 (0)