@azure/arm-compute
Version:
A generated SDK for ComputeManagementClient.
642 lines • 25.4 kB
JavaScript
/*
* Copyright (c) Microsoft Corporation.
* Licensed under the MIT License.
*
* Code generated by Microsoft (R) AutoRest Code Generator.
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
*/
import { setContinuationToken } from "../pagingHelper.js";
import * as coreClient from "@azure/core-client";
import * as Mappers from "../models/mappers.js";
import * as Parameters from "../models/parameters.js";
import { createHttpPoller, } from "@azure/core-lro";
import { createLroSpec } from "../lroImpl.js";
/// <reference lib="esnext.asynciterable" />
/** Class containing AvailabilitySets operations. */
export class AvailabilitySetsImpl {
client;
/**
* Initialize a new instance of the class AvailabilitySets class.
* @param client Reference to the service client
*/
constructor(client) {
this.client = client;
}
/**
* Lists all availability sets in a subscription.
* @param options The options parameters.
*/
listBySubscription(options) {
const iter = this.listBySubscriptionPagingAll(options);
return {
next() {
return iter.next();
},
[Symbol.asyncIterator]() {
return this;
},
byPage: (settings) => {
if (settings?.maxPageSize) {
throw new Error("maxPageSize is not supported by this operation.");
}
return this.listBySubscriptionPagingPage(options, settings);
},
};
}
async *listBySubscriptionPagingPage(options, settings) {
let result;
let continuationToken = settings?.continuationToken;
if (!continuationToken) {
result = await this._listBySubscription(options);
let page = result.value || [];
continuationToken = result.nextLink;
setContinuationToken(page, continuationToken);
yield page;
}
while (continuationToken) {
result = await this._listBySubscriptionNext(continuationToken, options);
continuationToken = result.nextLink;
let page = result.value || [];
setContinuationToken(page, continuationToken);
yield page;
}
}
async *listBySubscriptionPagingAll(options) {
for await (const page of this.listBySubscriptionPagingPage(options)) {
yield* page;
}
}
/**
* Lists all availability sets in a resource group.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param options The options parameters.
*/
list(resourceGroupName, options) {
const iter = this.listPagingAll(resourceGroupName, options);
return {
next() {
return iter.next();
},
[Symbol.asyncIterator]() {
return this;
},
byPage: (settings) => {
if (settings?.maxPageSize) {
throw new Error("maxPageSize is not supported by this operation.");
}
return this.listPagingPage(resourceGroupName, options, settings);
},
};
}
async *listPagingPage(resourceGroupName, options, settings) {
let result;
let continuationToken = settings?.continuationToken;
if (!continuationToken) {
result = await this._list(resourceGroupName, options);
let page = result.value || [];
continuationToken = result.nextLink;
setContinuationToken(page, continuationToken);
yield page;
}
while (continuationToken) {
result = await this._listNext(resourceGroupName, continuationToken, options);
continuationToken = result.nextLink;
let page = result.value || [];
setContinuationToken(page, continuationToken);
yield page;
}
}
async *listPagingAll(resourceGroupName, options) {
for await (const page of this.listPagingPage(resourceGroupName, options)) {
yield* page;
}
}
/**
* Lists all available virtual machine sizes that can be used to create a new virtual machine in an
* existing availability set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
listAvailableSizes(resourceGroupName, availabilitySetName, options) {
const iter = this.listAvailableSizesPagingAll(resourceGroupName, availabilitySetName, options);
return {
next() {
return iter.next();
},
[Symbol.asyncIterator]() {
return this;
},
byPage: (settings) => {
if (settings?.maxPageSize) {
throw new Error("maxPageSize is not supported by this operation.");
}
return this.listAvailableSizesPagingPage(resourceGroupName, availabilitySetName, options, settings);
},
};
}
async *listAvailableSizesPagingPage(resourceGroupName, availabilitySetName, options, settings) {
let result;
let continuationToken = settings?.continuationToken;
if (!continuationToken) {
result = await this._listAvailableSizes(resourceGroupName, availabilitySetName, options);
let page = result.value || [];
continuationToken = result.nextLink;
setContinuationToken(page, continuationToken);
yield page;
}
while (continuationToken) {
result = await this._listAvailableSizesNext(resourceGroupName, availabilitySetName, continuationToken, options);
continuationToken = result.nextLink;
let page = result.value || [];
setContinuationToken(page, continuationToken);
yield page;
}
}
async *listAvailableSizesPagingAll(resourceGroupName, availabilitySetName, options) {
for await (const page of this.listAvailableSizesPagingPage(resourceGroupName, availabilitySetName, options)) {
yield* page;
}
}
/**
* Lists all availability sets in a subscription.
* @param options The options parameters.
*/
_listBySubscription(options) {
return this.client.sendOperationRequest({ options }, listBySubscriptionOperationSpec);
}
/**
* Lists all availability sets in a resource group.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param options The options parameters.
*/
_list(resourceGroupName, options) {
return this.client.sendOperationRequest({ resourceGroupName, options }, listOperationSpec);
}
/**
* Retrieves information about an availability set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
get(resourceGroupName, availabilitySetName, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, options }, getOperationSpec);
}
/**
* Create or update an availability set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param parameters Parameters supplied to the Create Availability Set operation.
* @param options The options parameters.
*/
createOrUpdate(resourceGroupName, availabilitySetName, parameters, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, parameters, options }, createOrUpdateOperationSpec);
}
/**
* Update an availability set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param parameters Parameters supplied to the Update Availability Set operation.
* @param options The options parameters.
*/
update(resourceGroupName, availabilitySetName, parameters, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, parameters, options }, updateOperationSpec);
}
/**
* Delete an availability set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
delete(resourceGroupName, availabilitySetName, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, options }, deleteOperationSpec);
}
/**
* Cancel the migration operation on an Availability Set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
cancelMigrationToVirtualMachineScaleSet(resourceGroupName, availabilitySetName, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, options }, cancelMigrationToVirtualMachineScaleSetOperationSpec);
}
/**
* Create a new Flexible Virtual Machine Scale Set and migrate all the Virtual Machines in the
* Availability Set. This does not trigger a downtime on the Virtual Machines.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
async beginConvertToVirtualMachineScaleSet(resourceGroupName, availabilitySetName, options) {
const directSendOperation = async (args, spec) => {
return this.client.sendOperationRequest(args, spec);
};
const sendOperationFn = async (args, spec) => {
let currentRawResponse = undefined;
const providedCallback = args.options?.onResponse;
const callback = (rawResponse, flatResponse) => {
currentRawResponse = rawResponse;
providedCallback?.(rawResponse, flatResponse);
};
const updatedArgs = {
...args,
options: {
...args.options,
onResponse: callback,
},
};
const flatResponse = await directSendOperation(updatedArgs, spec);
return {
flatResponse,
rawResponse: {
statusCode: currentRawResponse.status,
body: currentRawResponse.parsedBody,
headers: currentRawResponse.headers.toJSON(),
},
};
};
const lro = createLroSpec({
sendOperationFn,
args: { resourceGroupName, availabilitySetName, options },
spec: convertToVirtualMachineScaleSetOperationSpec,
});
const poller = await createHttpPoller(lro, {
restoreFrom: options?.resumeFrom,
intervalInMs: options?.updateIntervalInMs,
resourceLocationConfig: "location",
});
await poller.poll();
return poller;
}
/**
* Create a new Flexible Virtual Machine Scale Set and migrate all the Virtual Machines in the
* Availability Set. This does not trigger a downtime on the Virtual Machines.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
async beginConvertToVirtualMachineScaleSetAndWait(resourceGroupName, availabilitySetName, options) {
const poller = await this.beginConvertToVirtualMachineScaleSet(resourceGroupName, availabilitySetName, options);
return poller.pollUntilDone();
}
/**
* Start migration operation on an Availability Set to move its Virtual Machines to a Virtual Machine
* Scale Set. This should be followed by a migrate operation on each Virtual Machine that triggers a
* downtime on the Virtual Machine.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param parameters Parameters supplied to the migrate operation on the availability set.
* @param options The options parameters.
*/
startMigrationToVirtualMachineScaleSet(resourceGroupName, availabilitySetName, parameters, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, parameters, options }, startMigrationToVirtualMachineScaleSetOperationSpec);
}
/**
* Validates that the Virtual Machines in the Availability Set can be migrated to the provided Virtual
* Machine Scale Set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param parameters Parameters supplied to the migrate operation on the availability set.
* @param options The options parameters.
*/
validateMigrationToVirtualMachineScaleSet(resourceGroupName, availabilitySetName, parameters, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, parameters, options }, validateMigrationToVirtualMachineScaleSetOperationSpec);
}
/**
* Lists all available virtual machine sizes that can be used to create a new virtual machine in an
* existing availability set.
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param options The options parameters.
*/
_listAvailableSizes(resourceGroupName, availabilitySetName, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, options }, listAvailableSizesOperationSpec);
}
/**
* ListBySubscriptionNext
* @param nextLink The nextLink from the previous successful call to the ListBySubscription method.
* @param options The options parameters.
*/
_listBySubscriptionNext(nextLink, options) {
return this.client.sendOperationRequest({ nextLink, options }, listBySubscriptionNextOperationSpec);
}
/**
* ListNext
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param nextLink The nextLink from the previous successful call to the List method.
* @param options The options parameters.
*/
_listNext(resourceGroupName, nextLink, options) {
return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listNextOperationSpec);
}
/**
* ListAvailableSizesNext
* @param resourceGroupName The name of the resource group. The name is case insensitive.
* @param availabilitySetName The name of the availability set.
* @param nextLink The nextLink from the previous successful call to the ListAvailableSizes method.
* @param options The options parameters.
*/
_listAvailableSizesNext(resourceGroupName, availabilitySetName, nextLink, options) {
return this.client.sendOperationRequest({ resourceGroupName, availabilitySetName, nextLink, options }, listAvailableSizesNextOperationSpec);
}
}
// Operation Specifications
const serializer = coreClient.createSerializer(Mappers, /* isXml */ false);
const listBySubscriptionOperationSpec = {
path: "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/availabilitySets",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySetListResult,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
queryParameters: [Parameters.apiVersion, Parameters.expand],
urlParameters: [Parameters.$host, Parameters.subscriptionId],
headerParameters: [Parameters.accept],
serializer,
};
const listOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySetListResult,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
],
headerParameters: [Parameters.accept],
serializer,
};
const getOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySet,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept],
serializer,
};
const createOrUpdateOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}",
httpMethod: "PUT",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySet,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
requestBody: Parameters.parameters,
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept, Parameters.contentType],
mediaType: "json",
serializer,
};
const updateOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}",
httpMethod: "PATCH",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySet,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
requestBody: Parameters.parameters1,
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept, Parameters.contentType],
mediaType: "json",
serializer,
};
const deleteOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}",
httpMethod: "DELETE",
responses: {
200: {},
204: {},
default: {
bodyMapper: Mappers.CloudError,
},
},
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept],
serializer,
};
const cancelMigrationToVirtualMachineScaleSetOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/cancelMigrationToVirtualMachineScaleSet",
httpMethod: "POST",
responses: {
204: {},
default: {
bodyMapper: Mappers.CloudError,
},
},
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept],
serializer,
};
const convertToVirtualMachineScaleSetOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/convertToVirtualMachineScaleSet",
httpMethod: "POST",
responses: {
200: {
headersMapper: Mappers.AvailabilitySetsConvertToVirtualMachineScaleSetHeaders,
},
201: {
headersMapper: Mappers.AvailabilitySetsConvertToVirtualMachineScaleSetHeaders,
},
202: {
headersMapper: Mappers.AvailabilitySetsConvertToVirtualMachineScaleSetHeaders,
},
204: {
headersMapper: Mappers.AvailabilitySetsConvertToVirtualMachineScaleSetHeaders,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
requestBody: Parameters.parameters2,
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept, Parameters.contentType],
mediaType: "json",
serializer,
};
const startMigrationToVirtualMachineScaleSetOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/startMigrationToVirtualMachineScaleSet",
httpMethod: "POST",
responses: {
204: {},
default: {
bodyMapper: Mappers.CloudError,
},
},
requestBody: Parameters.parameters3,
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept, Parameters.contentType],
mediaType: "json",
serializer,
};
const validateMigrationToVirtualMachineScaleSetOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/validateMigrationToVirtualMachineScaleSet",
httpMethod: "POST",
responses: {
204: {},
default: {
bodyMapper: Mappers.CloudError,
},
},
requestBody: Parameters.parameters3,
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept, Parameters.contentType],
mediaType: "json",
serializer,
};
const listAvailableSizesOperationSpec = {
path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/vmSizes",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.VirtualMachineSizeListResult,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
queryParameters: [Parameters.apiVersion],
urlParameters: [
Parameters.$host,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept],
serializer,
};
const listBySubscriptionNextOperationSpec = {
path: "{nextLink}",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySetListResult,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
urlParameters: [
Parameters.$host,
Parameters.nextLink,
Parameters.subscriptionId,
],
headerParameters: [Parameters.accept],
serializer,
};
const listNextOperationSpec = {
path: "{nextLink}",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.AvailabilitySetListResult,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
urlParameters: [
Parameters.$host,
Parameters.nextLink,
Parameters.subscriptionId,
Parameters.resourceGroupName,
],
headerParameters: [Parameters.accept],
serializer,
};
const listAvailableSizesNextOperationSpec = {
path: "{nextLink}",
httpMethod: "GET",
responses: {
200: {
bodyMapper: Mappers.VirtualMachineSizeListResult,
},
default: {
bodyMapper: Mappers.CloudError,
},
},
urlParameters: [
Parameters.$host,
Parameters.nextLink,
Parameters.subscriptionId,
Parameters.resourceGroupName,
Parameters.availabilitySetName,
],
headerParameters: [Parameters.accept],
serializer,
};
//# sourceMappingURL=availabilitySets.js.map