@azure/arm-elasticsan 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +109 -0
  4. package/dist/index.js +2897 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.min.js +1 -0
  7. package/dist/index.min.js.map +1 -0
  8. package/dist-esm/samples-dev/elasticSansCreateSample.d.ts +2 -0
  9. package/dist-esm/samples-dev/elasticSansCreateSample.d.ts.map +1 -0
  10. package/dist-esm/samples-dev/elasticSansCreateSample.js +62 -0
  11. package/dist-esm/samples-dev/elasticSansCreateSample.js.map +1 -0
  12. package/dist-esm/samples-dev/elasticSansDeleteSample.d.ts +2 -0
  13. package/dist-esm/samples-dev/elasticSansDeleteSample.d.ts.map +1 -0
  14. package/dist-esm/samples-dev/elasticSansDeleteSample.js +49 -0
  15. package/dist-esm/samples-dev/elasticSansDeleteSample.js.map +1 -0
  16. package/dist-esm/samples-dev/elasticSansGetSample.d.ts +2 -0
  17. package/dist-esm/samples-dev/elasticSansGetSample.d.ts.map +1 -0
  18. package/dist-esm/samples-dev/elasticSansGetSample.js +49 -0
  19. package/dist-esm/samples-dev/elasticSansGetSample.js.map +1 -0
  20. package/dist-esm/samples-dev/elasticSansListByResourceGroupSample.d.ts +2 -0
  21. package/dist-esm/samples-dev/elasticSansListByResourceGroupSample.d.ts.map +1 -0
  22. package/dist-esm/samples-dev/elasticSansListByResourceGroupSample.js +75 -0
  23. package/dist-esm/samples-dev/elasticSansListByResourceGroupSample.js.map +1 -0
  24. package/dist-esm/samples-dev/elasticSansListBySubscriptionSample.d.ts +2 -0
  25. package/dist-esm/samples-dev/elasticSansListBySubscriptionSample.d.ts.map +1 -0
  26. package/dist-esm/samples-dev/elasticSansListBySubscriptionSample.js +73 -0
  27. package/dist-esm/samples-dev/elasticSansListBySubscriptionSample.js.map +1 -0
  28. package/dist-esm/samples-dev/elasticSansUpdateSample.d.ts +2 -0
  29. package/dist-esm/samples-dev/elasticSansUpdateSample.d.ts.map +1 -0
  30. package/dist-esm/samples-dev/elasticSansUpdateSample.js +55 -0
  31. package/dist-esm/samples-dev/elasticSansUpdateSample.js.map +1 -0
  32. package/dist-esm/samples-dev/operationsListSample.d.ts +2 -0
  33. package/dist-esm/samples-dev/operationsListSample.d.ts.map +1 -0
  34. package/dist-esm/samples-dev/operationsListSample.js +73 -0
  35. package/dist-esm/samples-dev/operationsListSample.js.map +1 -0
  36. package/dist-esm/samples-dev/skusListSample.d.ts +2 -0
  37. package/dist-esm/samples-dev/skusListSample.d.ts.map +1 -0
  38. package/dist-esm/samples-dev/skusListSample.js +75 -0
  39. package/dist-esm/samples-dev/skusListSample.js.map +1 -0
  40. package/dist-esm/samples-dev/volumeGroupsCreateSample.d.ts +2 -0
  41. package/dist-esm/samples-dev/volumeGroupsCreateSample.d.ts.map +1 -0
  42. package/dist-esm/samples-dev/volumeGroupsCreateSample.js +62 -0
  43. package/dist-esm/samples-dev/volumeGroupsCreateSample.js.map +1 -0
  44. package/dist-esm/samples-dev/volumeGroupsDeleteSample.d.ts +2 -0
  45. package/dist-esm/samples-dev/volumeGroupsDeleteSample.d.ts.map +1 -0
  46. package/dist-esm/samples-dev/volumeGroupsDeleteSample.js +51 -0
  47. package/dist-esm/samples-dev/volumeGroupsDeleteSample.js.map +1 -0
  48. package/dist-esm/samples-dev/volumeGroupsGetSample.d.ts +2 -0
  49. package/dist-esm/samples-dev/volumeGroupsGetSample.d.ts.map +1 -0
  50. package/dist-esm/samples-dev/volumeGroupsGetSample.js +51 -0
  51. package/dist-esm/samples-dev/volumeGroupsGetSample.js.map +1 -0
  52. package/dist-esm/samples-dev/volumeGroupsListByElasticSanSample.d.ts +2 -0
  53. package/dist-esm/samples-dev/volumeGroupsListByElasticSanSample.d.ts.map +1 -0
  54. package/dist-esm/samples-dev/volumeGroupsListByElasticSanSample.js +77 -0
  55. package/dist-esm/samples-dev/volumeGroupsListByElasticSanSample.js.map +1 -0
  56. package/dist-esm/samples-dev/volumeGroupsUpdateSample.d.ts +2 -0
  57. package/dist-esm/samples-dev/volumeGroupsUpdateSample.d.ts.map +1 -0
  58. package/dist-esm/samples-dev/volumeGroupsUpdateSample.js +62 -0
  59. package/dist-esm/samples-dev/volumeGroupsUpdateSample.js.map +1 -0
  60. package/dist-esm/samples-dev/volumesCreateSample.d.ts +2 -0
  61. package/dist-esm/samples-dev/volumesCreateSample.d.ts.map +1 -0
  62. package/dist-esm/samples-dev/volumesCreateSample.js +59 -0
  63. package/dist-esm/samples-dev/volumesCreateSample.js.map +1 -0
  64. package/dist-esm/samples-dev/volumesDeleteSample.d.ts +2 -0
  65. package/dist-esm/samples-dev/volumesDeleteSample.d.ts.map +1 -0
  66. package/dist-esm/samples-dev/volumesDeleteSample.js +53 -0
  67. package/dist-esm/samples-dev/volumesDeleteSample.js.map +1 -0
  68. package/dist-esm/samples-dev/volumesGetSample.d.ts +2 -0
  69. package/dist-esm/samples-dev/volumesGetSample.d.ts.map +1 -0
  70. package/dist-esm/samples-dev/volumesGetSample.js +53 -0
  71. package/dist-esm/samples-dev/volumesGetSample.js.map +1 -0
  72. package/dist-esm/samples-dev/volumesListByVolumeGroupSample.d.ts +2 -0
  73. package/dist-esm/samples-dev/volumesListByVolumeGroupSample.d.ts.map +1 -0
  74. package/dist-esm/samples-dev/volumesListByVolumeGroupSample.js +79 -0
  75. package/dist-esm/samples-dev/volumesListByVolumeGroupSample.js.map +1 -0
  76. package/dist-esm/samples-dev/volumesUpdateSample.d.ts +2 -0
  77. package/dist-esm/samples-dev/volumesUpdateSample.d.ts.map +1 -0
  78. package/dist-esm/samples-dev/volumesUpdateSample.js +58 -0
  79. package/dist-esm/samples-dev/volumesUpdateSample.js.map +1 -0
  80. package/dist-esm/src/elasticSanManagement.d.ts +24 -0
  81. package/dist-esm/src/elasticSanManagement.d.ts.map +1 -0
  82. package/dist-esm/src/elasticSanManagement.js +107 -0
  83. package/dist-esm/src/elasticSanManagement.js.map +1 -0
  84. package/dist-esm/src/index.d.ts +5 -0
  85. package/dist-esm/src/index.d.ts.map +1 -0
  86. package/dist-esm/src/index.js +12 -0
  87. package/dist-esm/src/index.js.map +1 -0
  88. package/dist-esm/src/lroImpl.d.ts +16 -0
  89. package/dist-esm/src/lroImpl.d.ts.map +1 -0
  90. package/dist-esm/src/lroImpl.js +29 -0
  91. package/dist-esm/src/lroImpl.js.map +1 -0
  92. package/dist-esm/src/models/index.d.ts +691 -0
  93. package/dist-esm/src/models/index.d.ts.map +1 -0
  94. package/dist-esm/src/models/index.js +88 -0
  95. package/dist-esm/src/models/index.js.map +1 -0
  96. package/dist-esm/src/models/mappers.d.ts +29 -0
  97. package/dist-esm/src/models/mappers.d.ts.map +1 -0
  98. package/dist-esm/src/models/mappers.js +877 -0
  99. package/dist-esm/src/models/mappers.js.map +1 -0
  100. package/dist-esm/src/models/parameters.d.ts +19 -0
  101. package/dist-esm/src/models/parameters.d.ts.map +1 -0
  102. package/dist-esm/src/models/parameters.js +170 -0
  103. package/dist-esm/src/models/parameters.js.map +1 -0
  104. package/dist-esm/src/operations/elasticSans.d.ts +107 -0
  105. package/dist-esm/src/operations/elasticSans.d.ts.map +1 -0
  106. package/dist-esm/src/operations/elasticSans.js +509 -0
  107. package/dist-esm/src/operations/elasticSans.js.map +1 -0
  108. package/dist-esm/src/operations/index.d.ts +6 -0
  109. package/dist-esm/src/operations/index.d.ts.map +1 -0
  110. package/dist-esm/src/operations/index.js +13 -0
  111. package/dist-esm/src/operations/index.js.map +1 -0
  112. package/dist-esm/src/operations/operations.d.ts +26 -0
  113. package/dist-esm/src/operations/operations.d.ts.map +1 -0
  114. package/dist-esm/src/operations/operations.js +90 -0
  115. package/dist-esm/src/operations/operations.js.map +1 -0
  116. package/dist-esm/src/operations/skus.d.ts +26 -0
  117. package/dist-esm/src/operations/skus.d.ts.map +1 -0
  118. package/dist-esm/src/operations/skus.js +90 -0
  119. package/dist-esm/src/operations/skus.js.map +1 -0
  120. package/dist-esm/src/operations/volumeGroups.d.ts +99 -0
  121. package/dist-esm/src/operations/volumeGroups.d.ts.map +1 -0
  122. package/dist-esm/src/operations/volumeGroups.js +438 -0
  123. package/dist-esm/src/operations/volumeGroups.js.map +1 -0
  124. package/dist-esm/src/operations/volumes.d.ts +109 -0
  125. package/dist-esm/src/operations/volumes.d.ts.map +1 -0
  126. package/dist-esm/src/operations/volumes.js +468 -0
  127. package/dist-esm/src/operations/volumes.js.map +1 -0
  128. package/dist-esm/src/operationsInterfaces/elasticSans.d.ts +71 -0
  129. package/dist-esm/src/operationsInterfaces/elasticSans.d.ts.map +1 -0
  130. package/dist-esm/src/operationsInterfaces/elasticSans.js +9 -0
  131. package/dist-esm/src/operationsInterfaces/elasticSans.js.map +1 -0
  132. package/dist-esm/src/operationsInterfaces/index.d.ts +6 -0
  133. package/dist-esm/src/operationsInterfaces/index.d.ts.map +1 -0
  134. package/dist-esm/src/operationsInterfaces/index.js +13 -0
  135. package/dist-esm/src/operationsInterfaces/index.js.map +1 -0
  136. package/dist-esm/src/operationsInterfaces/operations.d.ts +11 -0
  137. package/dist-esm/src/operationsInterfaces/operations.d.ts.map +1 -0
  138. package/dist-esm/src/operationsInterfaces/operations.js +9 -0
  139. package/dist-esm/src/operationsInterfaces/operations.js.map +1 -0
  140. package/dist-esm/src/operationsInterfaces/skus.d.ts +11 -0
  141. package/dist-esm/src/operationsInterfaces/skus.d.ts.map +1 -0
  142. package/dist-esm/src/operationsInterfaces/skus.js +9 -0
  143. package/dist-esm/src/operationsInterfaces/skus.js.map +1 -0
  144. package/dist-esm/src/operationsInterfaces/volumeGroups.d.ts +74 -0
  145. package/dist-esm/src/operationsInterfaces/volumeGroups.d.ts.map +1 -0
  146. package/dist-esm/src/operationsInterfaces/volumeGroups.js +9 -0
  147. package/dist-esm/src/operationsInterfaces/volumeGroups.js.map +1 -0
  148. package/dist-esm/src/operationsInterfaces/volumes.d.ts +82 -0
  149. package/dist-esm/src/operationsInterfaces/volumes.d.ts.map +1 -0
  150. package/dist-esm/src/operationsInterfaces/volumes.js +9 -0
  151. package/dist-esm/src/operationsInterfaces/volumes.js.map +1 -0
  152. package/dist-esm/test/elasticsan_examples.spec.d.ts +4 -0
  153. package/dist-esm/test/elasticsan_examples.spec.d.ts.map +1 -0
  154. package/dist-esm/test/elasticsan_examples.spec.js +80 -0
  155. package/dist-esm/test/elasticsan_examples.spec.js.map +1 -0
  156. package/package.json +122 -0
  157. package/review/arm-elasticsan.api.md +536 -0
  158. package/rollup.config.js +122 -0
  159. package/src/elasticSanManagement.ts +161 -0
  160. package/src/index.ts +12 -0
  161. package/src/lroImpl.ts +34 -0
  162. package/src/models/index.ts +787 -0
  163. package/src/models/mappers.ts +935 -0
  164. package/src/models/parameters.ts +199 -0
  165. package/src/operations/elasticSans.ts +683 -0
  166. package/src/operations/index.ts +13 -0
  167. package/src/operations/operations.ts +98 -0
  168. package/src/operations/skus.ts +96 -0
  169. package/src/operations/volumeGroups.ts +629 -0
  170. package/src/operations/volumes.ts +673 -0
  171. package/src/operationsInterfaces/elasticSans.ts +139 -0
  172. package/src/operationsInterfaces/index.ts +13 -0
  173. package/src/operationsInterfaces/operations.ts +22 -0
  174. package/src/operationsInterfaces/skus.ts +22 -0
  175. package/src/operationsInterfaces/volumeGroups.ts +147 -0
  176. package/src/operationsInterfaces/volumes.ts +157 -0
  177. package/tsconfig.json +33 -0
  178. package/types/arm-elasticsan.d.ts +1036 -0
  179. package/types/tsdoc-metadata.json +11 -0
@@ -0,0 +1,673 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation.
3
+ * Licensed under the MIT License.
4
+ *
5
+ * Code generated by Microsoft (R) AutoRest Code Generator.
6
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
+ */
8
+
9
+ import { PagedAsyncIterableIterator } from "@azure/core-paging";
10
+ import { Volumes } from "../operationsInterfaces";
11
+ import * as coreClient from "@azure/core-client";
12
+ import * as Mappers from "../models/mappers";
13
+ import * as Parameters from "../models/parameters";
14
+ import { ElasticSanManagement } from "../elasticSanManagement";
15
+ import { PollerLike, PollOperationState, LroEngine } from "@azure/core-lro";
16
+ import { LroImpl } from "../lroImpl";
17
+ import {
18
+ Volume,
19
+ VolumesListByVolumeGroupNextOptionalParams,
20
+ VolumesListByVolumeGroupOptionalParams,
21
+ VolumesCreateOptionalParams,
22
+ VolumesCreateResponse,
23
+ VolumeUpdate,
24
+ VolumesUpdateOptionalParams,
25
+ VolumesUpdateResponse,
26
+ VolumesDeleteOptionalParams,
27
+ VolumesGetOptionalParams,
28
+ VolumesGetResponse,
29
+ VolumesListByVolumeGroupResponse,
30
+ VolumesListByVolumeGroupNextResponse
31
+ } from "../models";
32
+
33
+ /// <reference lib="esnext.asynciterable" />
34
+ /** Class containing Volumes operations. */
35
+ export class VolumesImpl implements Volumes {
36
+ private readonly client: ElasticSanManagement;
37
+
38
+ /**
39
+ * Initialize a new instance of the class Volumes class.
40
+ * @param client Reference to the service client
41
+ */
42
+ constructor(client: ElasticSanManagement) {
43
+ this.client = client;
44
+ }
45
+
46
+ /**
47
+ * List Volumes in a VolumeGroup.
48
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
49
+ * @param elasticSanName The name of the ElasticSan.
50
+ * @param volumeGroupName The name of the VolumeGroup.
51
+ * @param options The options parameters.
52
+ */
53
+ public listByVolumeGroup(
54
+ resourceGroupName: string,
55
+ elasticSanName: string,
56
+ volumeGroupName: string,
57
+ options?: VolumesListByVolumeGroupOptionalParams
58
+ ): PagedAsyncIterableIterator<Volume> {
59
+ const iter = this.listByVolumeGroupPagingAll(
60
+ resourceGroupName,
61
+ elasticSanName,
62
+ volumeGroupName,
63
+ options
64
+ );
65
+ return {
66
+ next() {
67
+ return iter.next();
68
+ },
69
+ [Symbol.asyncIterator]() {
70
+ return this;
71
+ },
72
+ byPage: () => {
73
+ return this.listByVolumeGroupPagingPage(
74
+ resourceGroupName,
75
+ elasticSanName,
76
+ volumeGroupName,
77
+ options
78
+ );
79
+ }
80
+ };
81
+ }
82
+
83
+ private async *listByVolumeGroupPagingPage(
84
+ resourceGroupName: string,
85
+ elasticSanName: string,
86
+ volumeGroupName: string,
87
+ options?: VolumesListByVolumeGroupOptionalParams
88
+ ): AsyncIterableIterator<Volume[]> {
89
+ let result = await this._listByVolumeGroup(
90
+ resourceGroupName,
91
+ elasticSanName,
92
+ volumeGroupName,
93
+ options
94
+ );
95
+ yield result.value || [];
96
+ let continuationToken = result.nextLink;
97
+ while (continuationToken) {
98
+ result = await this._listByVolumeGroupNext(
99
+ resourceGroupName,
100
+ elasticSanName,
101
+ volumeGroupName,
102
+ continuationToken,
103
+ options
104
+ );
105
+ continuationToken = result.nextLink;
106
+ yield result.value || [];
107
+ }
108
+ }
109
+
110
+ private async *listByVolumeGroupPagingAll(
111
+ resourceGroupName: string,
112
+ elasticSanName: string,
113
+ volumeGroupName: string,
114
+ options?: VolumesListByVolumeGroupOptionalParams
115
+ ): AsyncIterableIterator<Volume> {
116
+ for await (const page of this.listByVolumeGroupPagingPage(
117
+ resourceGroupName,
118
+ elasticSanName,
119
+ volumeGroupName,
120
+ options
121
+ )) {
122
+ yield* page;
123
+ }
124
+ }
125
+
126
+ /**
127
+ * Create a Volume.
128
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
129
+ * @param elasticSanName The name of the ElasticSan.
130
+ * @param volumeGroupName The name of the VolumeGroup.
131
+ * @param volumeName The name of the Volume.
132
+ * @param parameters Volume object.
133
+ * @param options The options parameters.
134
+ */
135
+ async beginCreate(
136
+ resourceGroupName: string,
137
+ elasticSanName: string,
138
+ volumeGroupName: string,
139
+ volumeName: string,
140
+ parameters: Volume,
141
+ options?: VolumesCreateOptionalParams
142
+ ): Promise<
143
+ PollerLike<PollOperationState<VolumesCreateResponse>, VolumesCreateResponse>
144
+ > {
145
+ const directSendOperation = async (
146
+ args: coreClient.OperationArguments,
147
+ spec: coreClient.OperationSpec
148
+ ): Promise<VolumesCreateResponse> => {
149
+ return this.client.sendOperationRequest(args, spec);
150
+ };
151
+ const sendOperation = async (
152
+ args: coreClient.OperationArguments,
153
+ spec: coreClient.OperationSpec
154
+ ) => {
155
+ let currentRawResponse:
156
+ | coreClient.FullOperationResponse
157
+ | undefined = undefined;
158
+ const providedCallback = args.options?.onResponse;
159
+ const callback: coreClient.RawResponseCallback = (
160
+ rawResponse: coreClient.FullOperationResponse,
161
+ flatResponse: unknown
162
+ ) => {
163
+ currentRawResponse = rawResponse;
164
+ providedCallback?.(rawResponse, flatResponse);
165
+ };
166
+ const updatedArgs = {
167
+ ...args,
168
+ options: {
169
+ ...args.options,
170
+ onResponse: callback
171
+ }
172
+ };
173
+ const flatResponse = await directSendOperation(updatedArgs, spec);
174
+ return {
175
+ flatResponse,
176
+ rawResponse: {
177
+ statusCode: currentRawResponse!.status,
178
+ body: currentRawResponse!.parsedBody,
179
+ headers: currentRawResponse!.headers.toJSON()
180
+ }
181
+ };
182
+ };
183
+
184
+ const lro = new LroImpl(
185
+ sendOperation,
186
+ {
187
+ resourceGroupName,
188
+ elasticSanName,
189
+ volumeGroupName,
190
+ volumeName,
191
+ parameters,
192
+ options
193
+ },
194
+ createOperationSpec
195
+ );
196
+ const poller = new LroEngine(lro, {
197
+ resumeFrom: options?.resumeFrom,
198
+ intervalInMs: options?.updateIntervalInMs,
199
+ lroResourceLocationConfig: "azure-async-operation"
200
+ });
201
+ await poller.poll();
202
+ return poller;
203
+ }
204
+
205
+ /**
206
+ * Create a Volume.
207
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
208
+ * @param elasticSanName The name of the ElasticSan.
209
+ * @param volumeGroupName The name of the VolumeGroup.
210
+ * @param volumeName The name of the Volume.
211
+ * @param parameters Volume object.
212
+ * @param options The options parameters.
213
+ */
214
+ async beginCreateAndWait(
215
+ resourceGroupName: string,
216
+ elasticSanName: string,
217
+ volumeGroupName: string,
218
+ volumeName: string,
219
+ parameters: Volume,
220
+ options?: VolumesCreateOptionalParams
221
+ ): Promise<VolumesCreateResponse> {
222
+ const poller = await this.beginCreate(
223
+ resourceGroupName,
224
+ elasticSanName,
225
+ volumeGroupName,
226
+ volumeName,
227
+ parameters,
228
+ options
229
+ );
230
+ return poller.pollUntilDone();
231
+ }
232
+
233
+ /**
234
+ * Update an Volume.
235
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
236
+ * @param elasticSanName The name of the ElasticSan.
237
+ * @param volumeGroupName The name of the VolumeGroup.
238
+ * @param volumeName The name of the Volume.
239
+ * @param parameters Volume object.
240
+ * @param options The options parameters.
241
+ */
242
+ async beginUpdate(
243
+ resourceGroupName: string,
244
+ elasticSanName: string,
245
+ volumeGroupName: string,
246
+ volumeName: string,
247
+ parameters: VolumeUpdate,
248
+ options?: VolumesUpdateOptionalParams
249
+ ): Promise<
250
+ PollerLike<PollOperationState<VolumesUpdateResponse>, VolumesUpdateResponse>
251
+ > {
252
+ const directSendOperation = async (
253
+ args: coreClient.OperationArguments,
254
+ spec: coreClient.OperationSpec
255
+ ): Promise<VolumesUpdateResponse> => {
256
+ return this.client.sendOperationRequest(args, spec);
257
+ };
258
+ const sendOperation = async (
259
+ args: coreClient.OperationArguments,
260
+ spec: coreClient.OperationSpec
261
+ ) => {
262
+ let currentRawResponse:
263
+ | coreClient.FullOperationResponse
264
+ | undefined = undefined;
265
+ const providedCallback = args.options?.onResponse;
266
+ const callback: coreClient.RawResponseCallback = (
267
+ rawResponse: coreClient.FullOperationResponse,
268
+ flatResponse: unknown
269
+ ) => {
270
+ currentRawResponse = rawResponse;
271
+ providedCallback?.(rawResponse, flatResponse);
272
+ };
273
+ const updatedArgs = {
274
+ ...args,
275
+ options: {
276
+ ...args.options,
277
+ onResponse: callback
278
+ }
279
+ };
280
+ const flatResponse = await directSendOperation(updatedArgs, spec);
281
+ return {
282
+ flatResponse,
283
+ rawResponse: {
284
+ statusCode: currentRawResponse!.status,
285
+ body: currentRawResponse!.parsedBody,
286
+ headers: currentRawResponse!.headers.toJSON()
287
+ }
288
+ };
289
+ };
290
+
291
+ const lro = new LroImpl(
292
+ sendOperation,
293
+ {
294
+ resourceGroupName,
295
+ elasticSanName,
296
+ volumeGroupName,
297
+ volumeName,
298
+ parameters,
299
+ options
300
+ },
301
+ updateOperationSpec
302
+ );
303
+ const poller = new LroEngine(lro, {
304
+ resumeFrom: options?.resumeFrom,
305
+ intervalInMs: options?.updateIntervalInMs,
306
+ lroResourceLocationConfig: "azure-async-operation"
307
+ });
308
+ await poller.poll();
309
+ return poller;
310
+ }
311
+
312
+ /**
313
+ * Update an Volume.
314
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
315
+ * @param elasticSanName The name of the ElasticSan.
316
+ * @param volumeGroupName The name of the VolumeGroup.
317
+ * @param volumeName The name of the Volume.
318
+ * @param parameters Volume object.
319
+ * @param options The options parameters.
320
+ */
321
+ async beginUpdateAndWait(
322
+ resourceGroupName: string,
323
+ elasticSanName: string,
324
+ volumeGroupName: string,
325
+ volumeName: string,
326
+ parameters: VolumeUpdate,
327
+ options?: VolumesUpdateOptionalParams
328
+ ): Promise<VolumesUpdateResponse> {
329
+ const poller = await this.beginUpdate(
330
+ resourceGroupName,
331
+ elasticSanName,
332
+ volumeGroupName,
333
+ volumeName,
334
+ parameters,
335
+ options
336
+ );
337
+ return poller.pollUntilDone();
338
+ }
339
+
340
+ /**
341
+ * Delete an Volume.
342
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
343
+ * @param elasticSanName The name of the ElasticSan.
344
+ * @param volumeGroupName The name of the VolumeGroup.
345
+ * @param volumeName The name of the Volume.
346
+ * @param options The options parameters.
347
+ */
348
+ async beginDelete(
349
+ resourceGroupName: string,
350
+ elasticSanName: string,
351
+ volumeGroupName: string,
352
+ volumeName: string,
353
+ options?: VolumesDeleteOptionalParams
354
+ ): Promise<PollerLike<PollOperationState<void>, void>> {
355
+ const directSendOperation = async (
356
+ args: coreClient.OperationArguments,
357
+ spec: coreClient.OperationSpec
358
+ ): Promise<void> => {
359
+ return this.client.sendOperationRequest(args, spec);
360
+ };
361
+ const sendOperation = async (
362
+ args: coreClient.OperationArguments,
363
+ spec: coreClient.OperationSpec
364
+ ) => {
365
+ let currentRawResponse:
366
+ | coreClient.FullOperationResponse
367
+ | undefined = undefined;
368
+ const providedCallback = args.options?.onResponse;
369
+ const callback: coreClient.RawResponseCallback = (
370
+ rawResponse: coreClient.FullOperationResponse,
371
+ flatResponse: unknown
372
+ ) => {
373
+ currentRawResponse = rawResponse;
374
+ providedCallback?.(rawResponse, flatResponse);
375
+ };
376
+ const updatedArgs = {
377
+ ...args,
378
+ options: {
379
+ ...args.options,
380
+ onResponse: callback
381
+ }
382
+ };
383
+ const flatResponse = await directSendOperation(updatedArgs, spec);
384
+ return {
385
+ flatResponse,
386
+ rawResponse: {
387
+ statusCode: currentRawResponse!.status,
388
+ body: currentRawResponse!.parsedBody,
389
+ headers: currentRawResponse!.headers.toJSON()
390
+ }
391
+ };
392
+ };
393
+
394
+ const lro = new LroImpl(
395
+ sendOperation,
396
+ {
397
+ resourceGroupName,
398
+ elasticSanName,
399
+ volumeGroupName,
400
+ volumeName,
401
+ options
402
+ },
403
+ deleteOperationSpec
404
+ );
405
+ const poller = new LroEngine(lro, {
406
+ resumeFrom: options?.resumeFrom,
407
+ intervalInMs: options?.updateIntervalInMs,
408
+ lroResourceLocationConfig: "azure-async-operation"
409
+ });
410
+ await poller.poll();
411
+ return poller;
412
+ }
413
+
414
+ /**
415
+ * Delete an Volume.
416
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
417
+ * @param elasticSanName The name of the ElasticSan.
418
+ * @param volumeGroupName The name of the VolumeGroup.
419
+ * @param volumeName The name of the Volume.
420
+ * @param options The options parameters.
421
+ */
422
+ async beginDeleteAndWait(
423
+ resourceGroupName: string,
424
+ elasticSanName: string,
425
+ volumeGroupName: string,
426
+ volumeName: string,
427
+ options?: VolumesDeleteOptionalParams
428
+ ): Promise<void> {
429
+ const poller = await this.beginDelete(
430
+ resourceGroupName,
431
+ elasticSanName,
432
+ volumeGroupName,
433
+ volumeName,
434
+ options
435
+ );
436
+ return poller.pollUntilDone();
437
+ }
438
+
439
+ /**
440
+ * Get an Volume.
441
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
442
+ * @param elasticSanName The name of the ElasticSan.
443
+ * @param volumeGroupName The name of the VolumeGroup.
444
+ * @param volumeName The name of the Volume.
445
+ * @param options The options parameters.
446
+ */
447
+ get(
448
+ resourceGroupName: string,
449
+ elasticSanName: string,
450
+ volumeGroupName: string,
451
+ volumeName: string,
452
+ options?: VolumesGetOptionalParams
453
+ ): Promise<VolumesGetResponse> {
454
+ return this.client.sendOperationRequest(
455
+ {
456
+ resourceGroupName,
457
+ elasticSanName,
458
+ volumeGroupName,
459
+ volumeName,
460
+ options
461
+ },
462
+ getOperationSpec
463
+ );
464
+ }
465
+
466
+ /**
467
+ * List Volumes in a VolumeGroup.
468
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
469
+ * @param elasticSanName The name of the ElasticSan.
470
+ * @param volumeGroupName The name of the VolumeGroup.
471
+ * @param options The options parameters.
472
+ */
473
+ private _listByVolumeGroup(
474
+ resourceGroupName: string,
475
+ elasticSanName: string,
476
+ volumeGroupName: string,
477
+ options?: VolumesListByVolumeGroupOptionalParams
478
+ ): Promise<VolumesListByVolumeGroupResponse> {
479
+ return this.client.sendOperationRequest(
480
+ { resourceGroupName, elasticSanName, volumeGroupName, options },
481
+ listByVolumeGroupOperationSpec
482
+ );
483
+ }
484
+
485
+ /**
486
+ * ListByVolumeGroupNext
487
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
488
+ * @param elasticSanName The name of the ElasticSan.
489
+ * @param volumeGroupName The name of the VolumeGroup.
490
+ * @param nextLink The nextLink from the previous successful call to the ListByVolumeGroup method.
491
+ * @param options The options parameters.
492
+ */
493
+ private _listByVolumeGroupNext(
494
+ resourceGroupName: string,
495
+ elasticSanName: string,
496
+ volumeGroupName: string,
497
+ nextLink: string,
498
+ options?: VolumesListByVolumeGroupNextOptionalParams
499
+ ): Promise<VolumesListByVolumeGroupNextResponse> {
500
+ return this.client.sendOperationRequest(
501
+ { resourceGroupName, elasticSanName, volumeGroupName, nextLink, options },
502
+ listByVolumeGroupNextOperationSpec
503
+ );
504
+ }
505
+ }
506
+ // Operation Specifications
507
+ const serializer = coreClient.createSerializer(Mappers, /* isXml */ false);
508
+
509
+ const createOperationSpec: coreClient.OperationSpec = {
510
+ path:
511
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ElasticSan/elasticSans/{elasticSanName}/volumegroups/{volumeGroupName}/volumes/{volumeName}",
512
+ httpMethod: "PUT",
513
+ responses: {
514
+ 200: {
515
+ bodyMapper: Mappers.Volume
516
+ },
517
+ 201: {
518
+ bodyMapper: Mappers.Volume
519
+ },
520
+ 202: {
521
+ bodyMapper: Mappers.Volume
522
+ },
523
+ 204: {
524
+ bodyMapper: Mappers.Volume
525
+ },
526
+ default: {
527
+ bodyMapper: Mappers.ErrorModel
528
+ }
529
+ },
530
+ requestBody: Parameters.parameters4,
531
+ queryParameters: [Parameters.apiVersion],
532
+ urlParameters: [
533
+ Parameters.$host,
534
+ Parameters.subscriptionId,
535
+ Parameters.resourceGroupName,
536
+ Parameters.elasticSanName,
537
+ Parameters.volumeGroupName,
538
+ Parameters.volumeName
539
+ ],
540
+ headerParameters: [Parameters.accept, Parameters.contentType],
541
+ mediaType: "json",
542
+ serializer
543
+ };
544
+ const updateOperationSpec: coreClient.OperationSpec = {
545
+ path:
546
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ElasticSan/elasticSans/{elasticSanName}/volumegroups/{volumeGroupName}/volumes/{volumeName}",
547
+ httpMethod: "PATCH",
548
+ responses: {
549
+ 200: {
550
+ bodyMapper: Mappers.Volume
551
+ },
552
+ 201: {
553
+ bodyMapper: Mappers.Volume
554
+ },
555
+ 202: {
556
+ bodyMapper: Mappers.Volume
557
+ },
558
+ 204: {
559
+ bodyMapper: Mappers.Volume
560
+ },
561
+ default: {
562
+ bodyMapper: Mappers.ErrorModel
563
+ }
564
+ },
565
+ requestBody: Parameters.parameters5,
566
+ queryParameters: [Parameters.apiVersion],
567
+ urlParameters: [
568
+ Parameters.$host,
569
+ Parameters.subscriptionId,
570
+ Parameters.resourceGroupName,
571
+ Parameters.elasticSanName,
572
+ Parameters.volumeGroupName,
573
+ Parameters.volumeName
574
+ ],
575
+ headerParameters: [Parameters.accept, Parameters.contentType],
576
+ mediaType: "json",
577
+ serializer
578
+ };
579
+ const deleteOperationSpec: coreClient.OperationSpec = {
580
+ path:
581
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ElasticSan/elasticSans/{elasticSanName}/volumegroups/{volumeGroupName}/volumes/{volumeName}",
582
+ httpMethod: "DELETE",
583
+ responses: {
584
+ 200: {},
585
+ 201: {},
586
+ 202: {},
587
+ 204: {},
588
+ default: {
589
+ bodyMapper: Mappers.ErrorModel
590
+ }
591
+ },
592
+ queryParameters: [Parameters.apiVersion],
593
+ urlParameters: [
594
+ Parameters.$host,
595
+ Parameters.subscriptionId,
596
+ Parameters.resourceGroupName,
597
+ Parameters.elasticSanName,
598
+ Parameters.volumeGroupName,
599
+ Parameters.volumeName
600
+ ],
601
+ headerParameters: [Parameters.accept],
602
+ serializer
603
+ };
604
+ const getOperationSpec: coreClient.OperationSpec = {
605
+ path:
606
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ElasticSan/elasticSans/{elasticSanName}/volumegroups/{volumeGroupName}/volumes/{volumeName}",
607
+ httpMethod: "GET",
608
+ responses: {
609
+ 200: {
610
+ bodyMapper: Mappers.Volume
611
+ },
612
+ default: {
613
+ bodyMapper: Mappers.ErrorModel
614
+ }
615
+ },
616
+ queryParameters: [Parameters.apiVersion],
617
+ urlParameters: [
618
+ Parameters.$host,
619
+ Parameters.subscriptionId,
620
+ Parameters.resourceGroupName,
621
+ Parameters.elasticSanName,
622
+ Parameters.volumeGroupName,
623
+ Parameters.volumeName
624
+ ],
625
+ headerParameters: [Parameters.accept],
626
+ serializer
627
+ };
628
+ const listByVolumeGroupOperationSpec: coreClient.OperationSpec = {
629
+ path:
630
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ElasticSan/elasticSans/{elasticSanName}/volumegroups/{volumeGroupName}/volumes",
631
+ httpMethod: "GET",
632
+ responses: {
633
+ 200: {
634
+ bodyMapper: Mappers.VolumeList
635
+ },
636
+ default: {
637
+ bodyMapper: Mappers.ErrorModel
638
+ }
639
+ },
640
+ queryParameters: [Parameters.apiVersion],
641
+ urlParameters: [
642
+ Parameters.$host,
643
+ Parameters.subscriptionId,
644
+ Parameters.resourceGroupName,
645
+ Parameters.elasticSanName,
646
+ Parameters.volumeGroupName
647
+ ],
648
+ headerParameters: [Parameters.accept],
649
+ serializer
650
+ };
651
+ const listByVolumeGroupNextOperationSpec: coreClient.OperationSpec = {
652
+ path: "{nextLink}",
653
+ httpMethod: "GET",
654
+ responses: {
655
+ 200: {
656
+ bodyMapper: Mappers.VolumeList
657
+ },
658
+ default: {
659
+ bodyMapper: Mappers.ErrorModel
660
+ }
661
+ },
662
+ queryParameters: [Parameters.apiVersion],
663
+ urlParameters: [
664
+ Parameters.$host,
665
+ Parameters.subscriptionId,
666
+ Parameters.resourceGroupName,
667
+ Parameters.elasticSanName,
668
+ Parameters.nextLink,
669
+ Parameters.volumeGroupName
670
+ ],
671
+ headerParameters: [Parameters.accept],
672
+ serializer
673
+ };