Skip to content

Commit 211da23

Browse files
authored
NFS over REST (#32496)
### Packages impacted by this PR ### Issues associated with this PR ### Describe the problem that is addressed by this PR ### What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen? ### Are there test cases added in this PR? _(If not, why?)_ ### Provide a list of related PRs _(if any)_ ### Command used to generate this PR:**_(Applicable only to SDK release request PRs)_ ### Checklists - [ ] Added impacted package name to the issue description - [ ] Does this PR needs any fixes in the SDK Generator?** _(If so, create an Issue in the [Autorest/typescript](https://github.com/Azure/autorest.typescript) repository and link it here)_ - [ ] Added a changelog (if necessary)
1 parent 2d609dd commit 211da23

24 files changed

+2991
-214
lines changed

Diff for: common/config/rush/pnpm-lock.yaml

+32-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: sdk/storage/storage-file-share/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Release History
22

3+
## 12.27.0-beta.1 (2025-02-13)
4+
5+
### Features Added
6+
7+
- Added support for service version 2025-05-05.
8+
- Added support for NFS over REST.
9+
310
## 12.26.0 (2024-11-13)
411

512
### Features Added

Diff for: sdk/storage/storage-file-share/assets.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "js",
44
"TagPrefix": "js/storage/storage-file-share",
5-
"Tag": "js/storage/storage-file-share_8f5a651780"
5+
"Tag": "js/storage/storage-file-share_183c6c916d"
66
}

Diff for: sdk/storage/storage-file-share/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@azure/storage-file-share",
33
"sdk-type": "client",
4-
"version": "12.26.0",
4+
"version": "12.27.0-beta.1",
55
"description": "Microsoft Azure Storage SDK for JavaScript - File",
66
"main": "./dist/index.js",
77
"module": "./dist-esm/storage-file-share/src/index.js",

Diff for: sdk/storage/storage-file-share/review/storage-file-share.api.md

+110
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,14 @@ export interface DirectoryCreateHeaders {
196196
fileCreatedOn?: Date;
197197
fileId?: string;
198198
fileLastWriteOn?: Date;
199+
fileMode?: NfsFileMode;
199200
fileParentId?: string;
200201
filePermissionKey?: string;
202+
group?: string;
201203
isServerEncrypted?: boolean;
202204
lastModified?: Date;
205+
nfsFileType?: NfsFileType;
206+
owner?: string;
203207
requestId?: string;
204208
version?: string;
205209
}
@@ -279,13 +283,17 @@ export interface DirectoryGetPropertiesHeaders {
279283
fileCreatedOn?: Date;
280284
fileId?: string;
281285
fileLastWriteOn?: Date;
286+
fileMode?: NfsFileMode;
282287
fileParentId?: string;
283288
filePermissionKey?: string;
289+
group?: string;
284290
isServerEncrypted?: boolean;
285291
lastModified?: Date;
286292
metadata?: {
287293
[propertyName: string]: string;
288294
};
295+
nfsFileType?: NfsFileType;
296+
owner?: string;
289297
requestId?: string;
290298
version?: string;
291299
}
@@ -431,10 +439,13 @@ export interface DirectorySetPropertiesHeaders {
431439
fileCreatedOn?: Date;
432440
fileId?: string;
433441
fileLastWriteOn?: Date;
442+
fileMode?: NfsFileMode;
434443
fileParentId?: string;
435444
filePermissionKey?: string;
445+
group?: string;
436446
isServerEncrypted?: boolean;
437447
lastModified?: Date;
448+
owner?: string;
438449
requestId?: string;
439450
version?: string;
440451
}
@@ -468,6 +479,7 @@ export interface FileAndDirectoryCreateCommonOptions {
468479
filePermissionFormat?: FilePermissionFormat;
469480
filePermissionKey?: string;
470481
lastWriteTime?: Date | TimeNowType;
482+
posixProperties?: FilePosixProperties;
471483
}
472484

473485
// @public (undocumented)
@@ -479,6 +491,7 @@ export interface FileAndDirectorySetPropertiesCommonOptions {
479491
filePermissionFormat?: FilePermissionFormat;
480492
filePermissionKey?: string;
481493
lastWriteTime?: Date | TimeNowType | TimePreserveType;
494+
posixProperties?: FilePosixProperties;
482495
}
483496

484497
// @public
@@ -499,6 +512,35 @@ export interface FileCloseHandlesHeaders {
499512
version?: string;
500513
}
501514

515+
// @public
516+
export interface FileCreateHardLinkHeaders {
517+
clientRequestId?: string;
518+
date?: Date;
519+
etag?: string;
520+
fileChangeTime?: Date;
521+
fileCreationTime?: Date;
522+
fileId?: string;
523+
fileLastWriteTime?: Date;
524+
fileMode?: NfsFileMode;
525+
fileParentId?: string;
526+
group?: string;
527+
lastModified?: Date;
528+
linkCount?: number;
529+
nfsFileType?: NfsFileType;
530+
owner?: string;
531+
requestId?: string;
532+
version?: string;
533+
}
534+
535+
// @public
536+
export interface FileCreateHardLinkOptions extends CommonOptions {
537+
abortSignal?: AbortSignalLike;
538+
leaseAccessConditions?: LeaseAccessConditions;
539+
}
540+
541+
// @public
542+
export type FileCreateHardLinkResponse = WithResponse<FileCreateHardLinkHeaders, FileCreateHardLinkHeaders>;
543+
502544
// @public
503545
export interface FileCreateHeaders {
504546
date?: Date;
@@ -509,10 +551,14 @@ export interface FileCreateHeaders {
509551
fileCreatedOn?: Date;
510552
fileId?: string;
511553
fileLastWriteOn?: Date;
554+
fileMode?: NfsFileMode;
512555
fileParentId?: string;
513556
filePermissionKey?: string;
557+
group?: string;
514558
isServerEncrypted?: boolean;
515559
lastModified?: Date;
560+
nfsFileType?: NfsFileType;
561+
owner?: string;
516562
requestId?: string;
517563
version?: string;
518564
}
@@ -532,6 +578,7 @@ export type FileCreateResponse = WithResponse<FileCreateHeaders, FileCreateHeade
532578
export interface FileDeleteHeaders {
533579
date?: Date;
534580
errorCode?: string;
581+
linkCount?: number;
535582
requestId?: string;
536583
version?: string;
537584
}
@@ -576,16 +623,20 @@ export interface FileDownloadHeaders {
576623
fileCreatedOn?: Date;
577624
fileId?: string;
578625
fileLastWriteOn?: Date;
626+
fileMode?: NfsFileMode;
579627
fileParentId?: string;
580628
filePermissionKey?: string;
629+
group?: string;
581630
isServerEncrypted?: boolean;
582631
lastModified?: Date;
583632
leaseDuration?: LeaseDurationType;
584633
leaseState?: LeaseStateType;
585634
leaseStatus?: LeaseStatusType;
635+
linkCount?: number;
586636
metadata?: {
587637
[propertyName: string]: string;
588638
};
639+
owner?: string;
589640
requestId?: string;
590641
version?: string;
591642
}
@@ -674,17 +725,22 @@ export interface FileGetPropertiesHeaders {
674725
fileCreatedOn?: Date;
675726
fileId?: string;
676727
fileLastWriteOn?: Date;
728+
fileMode?: NfsFileMode;
677729
fileParentId?: string;
678730
filePermissionKey?: string;
679731
fileType?: string;
732+
group?: string;
680733
isServerEncrypted?: boolean;
681734
lastModified?: Date;
682735
leaseDuration?: LeaseDurationType;
683736
leaseState?: LeaseStateType;
684737
leaseStatus?: LeaseStatusType;
738+
linkCount?: number;
685739
metadata?: {
686740
[propertyName: string]: string;
687741
};
742+
nfsFileType?: NfsFileType;
743+
owner?: string;
688744
requestId?: string;
689745
version?: string;
690746
}
@@ -794,6 +850,14 @@ export type FilePermissionInheritType = "inherit";
794850
// @public
795851
export type FilePermissionPreserveType = "preserve";
796852

853+
// @public
854+
export interface FilePosixProperties {
855+
fileMode?: NfsFileMode;
856+
fileType?: NfsFileType;
857+
group?: string;
858+
owner?: string;
859+
}
860+
797861
// @public (undocumented)
798862
export interface FileProperties extends FileAndDirectorySetPropertiesCommonOptions, CommonOptions {
799863
abortSignal?: AbortSignalLike;
@@ -914,10 +978,14 @@ export interface FileSetHTTPHeadersHeaders {
914978
fileCreatedOn?: Date;
915979
fileId?: string;
916980
fileLastWriteOn?: Date;
981+
fileMode?: NfsFileMode;
917982
fileParentId?: string;
918983
filePermissionKey?: string;
984+
group?: string;
919985
isServerEncrypted?: boolean;
920986
lastModified?: Date;
987+
linkCount?: number;
988+
owner?: string;
921989
requestId?: string;
922990
version?: string;
923991
}
@@ -966,11 +1034,14 @@ export interface FileStartCopyHeaders {
9661034
export interface FileStartCopyOptions extends CommonOptions {
9671035
abortSignal?: AbortSignalLike;
9681036
copyFileSmbInfo?: CopyFileSmbInfo;
1037+
fileModeCopyMode?: ModeCopyMode;
1038+
fileOwnerCopyMode?: OwnerCopyMode;
9691039
filePermission?: string;
9701040
filePermissionFormat?: FilePermissionFormat;
9711041
filePermissionKey?: string;
9721042
leaseAccessConditions?: LeaseAccessConditions;
9731043
metadata?: Metadata;
1044+
posixProperties?: FilePosixProperties;
9741045
}
9751046

9761047
// @public
@@ -1237,9 +1308,34 @@ export interface Metrics {
12371308
version: string;
12381309
}
12391310

1311+
// @public
1312+
export type ModeCopyMode = "source" | "override";
1313+
12401314
// @public
12411315
export function newPipeline(credential?: Credential_2 | TokenCredential, pipelineOptions?: StoragePipelineOptions): Pipeline;
12421316

1317+
// @public
1318+
export interface NfsFileMode {
1319+
effectiveGroupIdentity: boolean;
1320+
effectiveUserIdentity: boolean;
1321+
group: PosixRolePermissions;
1322+
other: PosixRolePermissions;
1323+
owner: PosixRolePermissions;
1324+
stickyBit: boolean;
1325+
}
1326+
1327+
// @public
1328+
export type NfsFileType = string;
1329+
1330+
// @public
1331+
export type OwnerCopyMode = "source" | "override";
1332+
1333+
// @public
1334+
export function parseOctalFileMode(input?: string): NfsFileMode | undefined;
1335+
1336+
// @public
1337+
export function parseSymbolicFileMode(input?: string): NfsFileMode | undefined;
1338+
12431339
// @public
12441340
export type PermissionCopyModeType = "source" | "override";
12451341

@@ -1264,6 +1360,13 @@ export interface PipelineOptions {
12641360
shareTokenIntent?: ShareTokenIntent;
12651361
}
12661362

1363+
// @public
1364+
export interface PosixRolePermissions {
1365+
execute: boolean;
1366+
read: boolean;
1367+
write: boolean;
1368+
}
1369+
12671370
// @public
12681371
interface Range_2 {
12691372
count?: number;
@@ -1639,6 +1742,7 @@ export class ShareFileClient extends StorageClient {
16391742
abortCopyFromURL(copyId: string, options?: FileAbortCopyFromURLOptions): Promise<FileAbortCopyResponse>;
16401743
clearRange(offset: number, contentLength: number, options?: FileClearRangeOptions): Promise<FileUploadRangeResponse>;
16411744
create(size: number, options?: FileCreateOptions): Promise<FileCreateResponse>;
1745+
createHardLink(targetFile: string, options?: FileCreateHardLinkOptions): Promise<FileCreateHardLinkResponse>;
16421746
delete(options?: FileDeleteOptions): Promise<FileDeleteResponse>;
16431747
deleteIfExists(options?: FileDeleteOptions): Promise<FileDeleteIfExistsResponse>;
16441748
download(offset?: number, count?: number, options?: FileDownloadOptions): Promise<FileDownloadResponseModel>;
@@ -2163,6 +2267,12 @@ export type TimeNowType = "now";
21632267
// @public
21642268
export type TimePreserveType = "preserve";
21652269

2270+
// @public
2271+
export function toOctalFileMode(input?: NfsFileMode): string | undefined;
2272+
2273+
// @public
2274+
export function toSymbolicFileMode(input?: NfsFileMode): string | undefined;
2275+
21662276
export { WebResource }
21672277

21682278
// @public

0 commit comments

Comments
 (0)