azure-cli
Version:
Microsoft Azure Cross Platform Command Line tool
1,230 lines (1,083 loc) • 642 kB
JavaScript
/* jshint latedef:false */
/* jshint forin:false */
/* jshint noempty:false */
//
// Copyright (c) Microsoft and contributors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Warning: This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if the
// code is regenerated.
'use strict';
var util = require('util');
var _ = require('underscore');
var azureCommon = require('azure-common');
var Service = azureCommon.Service;
var WebResource = azureCommon.WebResource;
var ComputeManagementClient = ( /** @lends ComputeManagementClient */ function() {
/**
* @class
* The Compute Management Client.
* Initializes a new instance of the ComputeManagementClient class.
* @constructor
*
* @param {SubscriptionCloudCredentials} credentials Gets subscription
* credentials which uniquely identify Microsoft Azure subscription. The
* subscription ID forms part of the URI for every service call.
*
* @param {string} [credentials.subscriptionId]
*
* @param {string} [baseUri] Gets the URI used as the base for all cloud
* service requests.
*
* @param {Array} filters
*/
function ComputeManagementClient(credentials, baseUri, filters) {
if (credentials === null || credentials === undefined) {
throw new Error('credentials cannot be null.');
}
ComputeManagementClient['super_'].call(this, credentials, filters);
this.credentials = credentials;
this.baseUri = baseUri;
if (this.baseUri === null || this.baseUri === undefined) {
this.baseUri = 'https://management.azure.com';
}
if (this.apiVersion === null || this.apiVersion === undefined) {
this.apiVersion = '2015-05-01-preview';
}
if (this.longRunningOperationInitialTimeout === null || this.longRunningOperationInitialTimeout === undefined) {
this.longRunningOperationInitialTimeout = -1;
}
if (this.longRunningOperationRetryTimeout === null || this.longRunningOperationRetryTimeout === undefined) {
this.longRunningOperationRetryTimeout = -1;
}
/**
* Provides an instance of the
* [AvailabilitySetOperations](-AvailabilitySetOperations.html) object.
* @type {object}
*/
this.availabilitySets = new AvailabilitySetOperations(this);
/**
* Provides an instance of the [UsageOperations](-UsageOperations.html)
* object.
* @type {object}
*/
this.usage = new UsageOperations(this);
/**
* Provides an instance of the
* [VirtualMachineExtensionImageOperations](-VirtualMachineExtensionImageOperations.html)
* object.
* @type {object}
*/
this.virtualMachineExtensionImages = new VirtualMachineExtensionImageOperations(this);
/**
* Provides an instance of the
* [VirtualMachineExtensionOperations](-VirtualMachineExtensionOperations.html)
* object.
* @type {object}
*/
this.virtualMachineExtensions = new VirtualMachineExtensionOperations(this);
/**
* Provides an instance of the
* [VirtualMachineImageOperations](-VirtualMachineImageOperations.html)
* object.
* @type {object}
*/
this.virtualMachineImages = new VirtualMachineImageOperations(this);
/**
* Provides an instance of the
* [VirtualMachineOperations](-VirtualMachineOperations.html) object.
* @type {object}
*/
this.virtualMachines = new VirtualMachineOperations(this);
/**
* Provides an instance of the
* [VirtualMachineSizeOperations](-VirtualMachineSizeOperations.html)
* object.
* @type {object}
*/
this.virtualMachineSizes = new VirtualMachineSizeOperations(this);
}
util.inherits(ComputeManagementClient, Service);
/**
* The Get Operation Status operation returns the status of the specified
* operation. After calling an asynchronous operation, you can call
* GetLongRunningOperationStatus to determine whether the operation has
* succeeded, failed, or is still in progress.
*
* @param {string} operationStatusLink Location value returned by the Begin
* operation.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
ComputeManagementClient.prototype.getLongRunningOperationStatus = function(operationStatusLink, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (operationStatusLink === null || operationStatusLink === undefined) {
return callback(new Error('operationStatusLink cannot be null.'));
}
// Tracing
// Construct URL
var url2 = '';
url2 = url2 + operationStatusLink;
url2 = url2.replace(' ', '%20');
// Create HTTP transport objects
var httpRequest = new WebResource();
httpRequest.method = 'GET';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
// Send Request
return this.pipeline(httpRequest, function (err, response, body) {
if (err !== null && err !== undefined) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 200 && statusCode !== 202) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
// Deserialize Response
if (statusCode === 200 || statusCode === 202) {
var responseContent = body;
result = {};
var responseDoc = null;
if (responseContent) {
responseDoc = JSON.parse(responseContent);
}
if (responseDoc !== null && responseDoc !== undefined) {
var operationIdValue = responseDoc['operationId'];
if (operationIdValue !== null && operationIdValue !== undefined) {
var operationIdInstance = operationIdValue;
result.trackingOperationId = operationIdInstance;
}
var statusValue = responseDoc['status'];
if (statusValue !== null && statusValue !== undefined) {
var statusInstance = statusValue;
result.status = statusInstance;
}
var startTimeValue = responseDoc['startTime'];
if (startTimeValue !== null && startTimeValue !== undefined) {
var startTimeInstance = startTimeValue;
result.startTime = startTimeInstance;
}
var endTimeValue = responseDoc['endTime'];
if (endTimeValue !== null && endTimeValue !== undefined) {
var endTimeInstance = endTimeValue;
result.endTime = endTimeInstance;
}
var propertiesValue = responseDoc['properties'];
if (propertiesValue !== null && propertiesValue !== undefined) {
var outputValue = propertiesValue['output'];
if (outputValue !== null && outputValue !== undefined) {
var outputInstance = outputValue;
result.output = outputInstance;
}
}
var errorValue = responseDoc['error'];
if (errorValue !== null && errorValue !== undefined) {
var errorInstance = { details: [] };
result.error = errorInstance;
var detailsArray = errorValue['details'];
if (detailsArray !== null && detailsArray !== undefined) {
for (var loweredIndex1 = 0; loweredIndex1 < detailsArray.length; loweredIndex1 = loweredIndex1 + 1) {
var detailsValue = detailsArray[loweredIndex1];
var apiErrorBaseInstance = {};
errorInstance.details.push(apiErrorBaseInstance);
var codeValue = detailsValue['code'];
if (codeValue !== null && codeValue !== undefined) {
var codeInstance = codeValue;
apiErrorBaseInstance.code = codeInstance;
}
var targetValue = detailsValue['target'];
if (targetValue !== null && targetValue !== undefined) {
var targetInstance = targetValue;
apiErrorBaseInstance.target = targetInstance;
}
var messageValue = detailsValue['message'];
if (messageValue !== null && messageValue !== undefined) {
var messageInstance = messageValue;
apiErrorBaseInstance.message = messageInstance;
}
}
}
var innererrorValue = errorValue['innererror'];
if (innererrorValue !== null && innererrorValue !== undefined) {
var innererrorInstance = {};
errorInstance.innerError = innererrorInstance;
var exceptiontypeValue = innererrorValue['exceptiontype'];
if (exceptiontypeValue !== null && exceptiontypeValue !== undefined) {
var exceptiontypeInstance = exceptiontypeValue;
innererrorInstance.exceptionType = exceptiontypeInstance;
}
var errordetailValue = innererrorValue['errordetail'];
if (errordetailValue !== null && errordetailValue !== undefined) {
var errordetailInstance = errordetailValue;
innererrorInstance.errorDetail = errordetailInstance;
}
}
var codeValue2 = errorValue['code'];
if (codeValue2 !== null && codeValue2 !== undefined) {
var codeInstance2 = codeValue2;
errorInstance.code = codeInstance2;
}
var targetValue2 = errorValue['target'];
if (targetValue2 !== null && targetValue2 !== undefined) {
var targetInstance2 = targetValue2;
errorInstance.target = targetInstance2;
}
var messageValue2 = errorValue['message'];
if (messageValue2 !== null && messageValue2 !== undefined) {
var messageInstance2 = messageValue2;
errorInstance.message = messageInstance2;
}
}
}
}
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
return ComputeManagementClient;
})();
exports.ComputeManagementClient = ComputeManagementClient;
var AvailabilitySetOperations = ( /** @lends AvailabilitySetOperations */ function() {
/**
* @class
* Operations for managing the availability sets in compute management.
* __NOTE__: An instance of this class is automatically created for an
* instance of the [ComputeManagementClient] {@link
* ComputeManagementClient~ComputeManagementClient}.
* See [availabilitySets] {@link
* ComputeManagementClient~ComputeManagementClient#availabilitySets}.
* Initializes a new instance of the AvailabilitySetOperations class.
* @constructor
*
* @param {ComputeManagementClient} client Reference to the service client.
*/
function AvailabilitySetOperations(client) {
this.client = client;
}
/**
* The operation to create the availability set.
*
* @param {string} resourceGroupName The name of the resource group.
*
* @param {AvailabilitySet} parameters Parameters supplied to the Create
* Availability Set operation.
*
* @param {number} [parameters.platformUpdateDomainCount] Gets or sets Update
* Domain count.
*
* @param {number} [parameters.platformFaultDomainCount] Gets or sets Fault
* Domain count.
*
* @param {array} [parameters.virtualMachinesReferences] Gets or sets a list
* containing reference to all Virtual Machines created under this
* Availability Set.
*
* @param {array} [parameters.statuses] Gets or sets the resource status
* information.
*
* @param {string} [parameters.id] Gets or sets the ID of the resource.
*
* @param {string} [parameters.name] Gets or sets the name of the resource.
*
* @param {string} [parameters.type] Gets or sets the type of the resource.
*
* @param {string} parameters.location Gets or sets the location of the
* resource.
*
* @param {object} [parameters.tags] Gets or sets the tags attached to the
* resource.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
AvailabilitySetOperations.prototype.createOrUpdate = function(resourceGroupName, parameters, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (resourceGroupName === null || resourceGroupName === undefined) {
return callback(new Error('resourceGroupName cannot be null.'));
}
if (parameters === null || parameters === undefined) {
return callback(new Error('parameters cannot be null.'));
}
if (parameters.location === null || parameters.location === undefined) {
return callback(new Error('parameters.location cannot be null.'));
}
// Tracing
// Construct URL
var url2 = '';
url2 = url2 + '/subscriptions/';
if (this.client.credentials.subscriptionId !== null && this.client.credentials.subscriptionId !== undefined) {
url2 = url2 + encodeURIComponent(this.client.credentials.subscriptionId);
}
url2 = url2 + '/resourceGroups/';
url2 = url2 + encodeURIComponent(resourceGroupName);
url2 = url2 + '/providers/';
url2 = url2 + 'Microsoft.Compute';
url2 = url2 + '/availabilitySets/';
if (parameters.name !== null && parameters.name !== undefined) {
url2 = url2 + encodeURIComponent(parameters.name);
}
var queryParameters = [];
queryParameters.push('api-version=2015-05-01-preview');
if (queryParameters.length > 0) {
url2 = url2 + '?' + queryParameters.join('&');
}
var baseUrl = this.client.baseUri;
// Trim '/' character from the end of baseUrl and beginning of url.
if (baseUrl[baseUrl.length - 1] === '/') {
baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
}
if (url2[0] === '/') {
url2 = url2.substring(1);
}
url2 = baseUrl + '/' + url2;
url2 = url2.replace(' ', '%20');
// Create HTTP transport objects
var httpRequest = new WebResource();
httpRequest.method = 'PUT';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
httpRequest.headers['Content-Type'] = 'application/json';
// Serialize Request
var requestContent = null;
var requestDoc = null;
var availabilitySetJsonValue = {};
requestDoc = availabilitySetJsonValue;
var propertiesValue = {};
availabilitySetJsonValue['properties'] = propertiesValue;
if (parameters.platformUpdateDomainCount !== null && parameters.platformUpdateDomainCount !== undefined) {
propertiesValue['platformUpdateDomainCount'] = parameters.platformUpdateDomainCount;
}
if (parameters.platformFaultDomainCount !== null && parameters.platformFaultDomainCount !== undefined) {
propertiesValue['platformFaultDomainCount'] = parameters.platformFaultDomainCount;
}
if (parameters.virtualMachinesReferences !== null && parameters.virtualMachinesReferences !== undefined) {
var virtualMachinesArray = [];
for (var loweredIndex1 = 0; loweredIndex1 < parameters.virtualMachinesReferences.length; loweredIndex1 = loweredIndex1 + 1) {
var virtualMachinesItem = parameters.virtualMachinesReferences[loweredIndex1];
var virtualMachineReferenceValue = {};
virtualMachinesArray.push(virtualMachineReferenceValue);
if (virtualMachinesItem.referenceUri !== null && virtualMachinesItem.referenceUri !== undefined) {
virtualMachineReferenceValue['id'] = virtualMachinesItem.referenceUri;
}
}
propertiesValue['virtualMachines'] = virtualMachinesArray;
}
if (parameters.statuses !== null && parameters.statuses !== undefined) {
var statusesArray = [];
for (var loweredIndex2 = 0; loweredIndex2 < parameters.statuses.length; loweredIndex2 = loweredIndex2 + 1) {
var statusesItem = parameters.statuses[loweredIndex2];
var instanceViewStatusValue = {};
statusesArray.push(instanceViewStatusValue);
if (statusesItem.code !== null && statusesItem.code !== undefined) {
instanceViewStatusValue['code'] = statusesItem.code;
}
if (statusesItem.level !== null && statusesItem.level !== undefined) {
instanceViewStatusValue['level'] = statusesItem.level;
}
if (statusesItem.displayStatus !== null && statusesItem.displayStatus !== undefined) {
instanceViewStatusValue['displayStatus'] = statusesItem.displayStatus;
}
if (statusesItem.message !== null && statusesItem.message !== undefined) {
instanceViewStatusValue['message'] = statusesItem.message;
}
if (statusesItem.time !== null && statusesItem.time !== undefined) {
instanceViewStatusValue['time'] = statusesItem.time;
}
}
propertiesValue['statuses'] = statusesArray;
}
if (parameters.id !== null && parameters.id !== undefined) {
availabilitySetJsonValue['id'] = parameters.id;
}
if (parameters.name !== null && parameters.name !== undefined) {
availabilitySetJsonValue['name'] = parameters.name;
}
if (parameters.type !== null && parameters.type !== undefined) {
availabilitySetJsonValue['type'] = parameters.type;
}
availabilitySetJsonValue['location'] = parameters.location;
if (parameters.tags !== null && parameters.tags !== undefined) {
var tagsDictionary = {};
for (var tagsKey in parameters.tags) {
var tagsValue = parameters.tags[tagsKey];
tagsDictionary[tagsKey] = tagsValue;
}
availabilitySetJsonValue['tags'] = tagsDictionary;
}
requestContent = JSON.stringify(requestDoc);
httpRequest.body = requestContent;
httpRequest.headers['Content-Length'] = Buffer.isBuffer(requestContent) ? requestContent.length : Buffer.byteLength(requestContent, 'UTF8');
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err !== null && err !== undefined) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 200) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
// Deserialize Response
if (statusCode === 200) {
var responseContent = body;
result = {};
var responseDoc = null;
if (responseContent) {
responseDoc = JSON.parse(responseContent);
}
if (responseDoc !== null && responseDoc !== undefined) {
var availabilitySetInstance = { statuses: [], tags: {}, virtualMachinesReferences: [] };
result.availabilitySet = availabilitySetInstance;
var propertiesValue2 = responseDoc['properties'];
if (propertiesValue2 !== null && propertiesValue2 !== undefined) {
var platformUpdateDomainCountValue = propertiesValue2['platformUpdateDomainCount'];
if (platformUpdateDomainCountValue !== null && platformUpdateDomainCountValue !== undefined) {
var platformUpdateDomainCountInstance = platformUpdateDomainCountValue;
availabilitySetInstance.platformUpdateDomainCount = platformUpdateDomainCountInstance;
}
var platformFaultDomainCountValue = propertiesValue2['platformFaultDomainCount'];
if (platformFaultDomainCountValue !== null && platformFaultDomainCountValue !== undefined) {
var platformFaultDomainCountInstance = platformFaultDomainCountValue;
availabilitySetInstance.platformFaultDomainCount = platformFaultDomainCountInstance;
}
var virtualMachinesArray2 = propertiesValue2['virtualMachines'];
if (virtualMachinesArray2 !== null && virtualMachinesArray2 !== undefined) {
for (var loweredIndex3 = 0; loweredIndex3 < virtualMachinesArray2.length; loweredIndex3 = loweredIndex3 + 1) {
var virtualMachinesValue = virtualMachinesArray2[loweredIndex3];
var virtualMachineReferenceInstance = {};
availabilitySetInstance.virtualMachinesReferences.push(virtualMachineReferenceInstance);
var idValue = virtualMachinesValue['id'];
if (idValue !== null && idValue !== undefined) {
var idInstance = idValue;
virtualMachineReferenceInstance.referenceUri = idInstance;
}
}
}
var statusesArray2 = propertiesValue2['statuses'];
if (statusesArray2 !== null && statusesArray2 !== undefined) {
for (var loweredIndex4 = 0; loweredIndex4 < statusesArray2.length; loweredIndex4 = loweredIndex4 + 1) {
var statusesValue = statusesArray2[loweredIndex4];
var instanceViewStatusInstance = {};
availabilitySetInstance.statuses.push(instanceViewStatusInstance);
var codeValue = statusesValue['code'];
if (codeValue !== null && codeValue !== undefined) {
var codeInstance = codeValue;
instanceViewStatusInstance.code = codeInstance;
}
var levelValue = statusesValue['level'];
if (levelValue !== null && levelValue !== undefined) {
var levelInstance = levelValue;
instanceViewStatusInstance.level = levelInstance;
}
var displayStatusValue = statusesValue['displayStatus'];
if (displayStatusValue !== null && displayStatusValue !== undefined) {
var displayStatusInstance = displayStatusValue;
instanceViewStatusInstance.displayStatus = displayStatusInstance;
}
var messageValue = statusesValue['message'];
if (messageValue !== null && messageValue !== undefined) {
var messageInstance = messageValue;
instanceViewStatusInstance.message = messageInstance;
}
var timeValue = statusesValue['time'];
if (timeValue !== null && timeValue !== undefined) {
var timeInstance = timeValue;
instanceViewStatusInstance.time = timeInstance;
}
}
}
}
var idValue2 = responseDoc['id'];
if (idValue2 !== null && idValue2 !== undefined) {
var idInstance2 = idValue2;
availabilitySetInstance.id = idInstance2;
}
var nameValue = responseDoc['name'];
if (nameValue !== null && nameValue !== undefined) {
var nameInstance = nameValue;
availabilitySetInstance.name = nameInstance;
}
var typeValue = responseDoc['type'];
if (typeValue !== null && typeValue !== undefined) {
var typeInstance = typeValue;
availabilitySetInstance.type = typeInstance;
}
var locationValue = responseDoc['location'];
if (locationValue !== null && locationValue !== undefined) {
var locationInstance = locationValue;
availabilitySetInstance.location = locationInstance;
}
var tagsSequenceElement = responseDoc['tags'];
if (tagsSequenceElement !== null && tagsSequenceElement !== undefined) {
for (var property in tagsSequenceElement) {
var tagsKey2 = property;
var tagsValue2 = tagsSequenceElement[property];
availabilitySetInstance.tags[tagsKey2] = tagsValue2;
}
}
}
}
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* The operation to delete the availability set.
*
* @param {string} resourceGroupName The name of the resource group.
*
* @param {string} availabilitySetName The name of the availability set.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
AvailabilitySetOperations.prototype.deleteMethod = function(resourceGroupName, availabilitySetName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (resourceGroupName === null || resourceGroupName === undefined) {
return callback(new Error('resourceGroupName cannot be null.'));
}
if (availabilitySetName === null || availabilitySetName === undefined) {
return callback(new Error('availabilitySetName cannot be null.'));
}
// Tracing
// Construct URL
var url2 = '';
url2 = url2 + '/subscriptions/';
if (this.client.credentials.subscriptionId !== null && this.client.credentials.subscriptionId !== undefined) {
url2 = url2 + encodeURIComponent(this.client.credentials.subscriptionId);
}
url2 = url2 + '/resourceGroups/';
url2 = url2 + encodeURIComponent(resourceGroupName);
url2 = url2 + '/providers/';
url2 = url2 + 'Microsoft.Compute';
url2 = url2 + '/availabilitySets/';
url2 = url2 + encodeURIComponent(availabilitySetName);
var queryParameters = [];
queryParameters.push('api-version=2015-05-01-preview');
if (queryParameters.length > 0) {
url2 = url2 + '?' + queryParameters.join('&');
}
var baseUrl = this.client.baseUri;
// Trim '/' character from the end of baseUrl and beginning of url.
if (baseUrl[baseUrl.length - 1] === '/') {
baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
}
if (url2[0] === '/') {
url2 = url2.substring(1);
}
url2 = baseUrl + '/' + url2;
url2 = url2.replace(' ', '%20');
// Create HTTP transport objects
var httpRequest = new WebResource();
httpRequest.method = 'DELETE';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
httpRequest.headers['Content-Type'] = 'application/json';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err !== null && err !== undefined) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 200) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
// Deserialize Response
result = {};
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* The operation to get the availability set.
*
* @param {string} resourceGroupName The name of the resource group.
*
* @param {string} availabilitySetName The name of the availability set.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
AvailabilitySetOperations.prototype.get = function(resourceGroupName, availabilitySetName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (resourceGroupName === null || resourceGroupName === undefined) {
return callback(new Error('resourceGroupName cannot be null.'));
}
if (availabilitySetName === null || availabilitySetName === undefined) {
return callback(new Error('availabilitySetName cannot be null.'));
}
// Tracing
// Construct URL
var url2 = '';
url2 = url2 + '/subscriptions/';
if (this.client.credentials.subscriptionId !== null && this.client.credentials.subscriptionId !== undefined) {
url2 = url2 + encodeURIComponent(this.client.credentials.subscriptionId);
}
url2 = url2 + '/resourceGroups/';
url2 = url2 + encodeURIComponent(resourceGroupName);
url2 = url2 + '/providers/';
url2 = url2 + 'Microsoft.Compute';
url2 = url2 + '/availabilitySets/';
url2 = url2 + encodeURIComponent(availabilitySetName);
var queryParameters = [];
queryParameters.push('api-version=2015-05-01-preview');
if (queryParameters.length > 0) {
url2 = url2 + '?' + queryParameters.join('&');
}
var baseUrl = this.client.baseUri;
// Trim '/' character from the end of baseUrl and beginning of url.
if (baseUrl[baseUrl.length - 1] === '/') {
baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
}
if (url2[0] === '/') {
url2 = url2.substring(1);
}
url2 = baseUrl + '/' + url2;
url2 = url2.replace(' ', '%20');
// Create HTTP transport objects
var httpRequest = new WebResource();
httpRequest.method = 'GET';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
httpRequest.headers['Content-Type'] = 'application/json';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err !== null && err !== undefined) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 200) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
// Deserialize Response
if (statusCode === 200) {
var responseContent = body;
result = {};
var responseDoc = null;
if (responseContent) {
responseDoc = JSON.parse(responseContent);
}
if (responseDoc !== null && responseDoc !== undefined) {
var availabilitySetInstance = { statuses: [], tags: {}, virtualMachinesReferences: [] };
result.availabilitySet = availabilitySetInstance;
var propertiesValue = responseDoc['properties'];
if (propertiesValue !== null && propertiesValue !== undefined) {
var platformUpdateDomainCountValue = propertiesValue['platformUpdateDomainCount'];
if (platformUpdateDomainCountValue !== null && platformUpdateDomainCountValue !== undefined) {
var platformUpdateDomainCountInstance = platformUpdateDomainCountValue;
availabilitySetInstance.platformUpdateDomainCount = platformUpdateDomainCountInstance;
}
var platformFaultDomainCountValue = propertiesValue['platformFaultDomainCount'];
if (platformFaultDomainCountValue !== null && platformFaultDomainCountValue !== undefined) {
var platformFaultDomainCountInstance = platformFaultDomainCountValue;
availabilitySetInstance.platformFaultDomainCount = platformFaultDomainCountInstance;
}
var virtualMachinesArray = propertiesValue['virtualMachines'];
if (virtualMachinesArray !== null && virtualMachinesArray !== undefined) {
for (var loweredIndex1 = 0; loweredIndex1 < virtualMachinesArray.length; loweredIndex1 = loweredIndex1 + 1) {
var virtualMachinesValue = virtualMachinesArray[loweredIndex1];
var virtualMachineReferenceInstance = {};
availabilitySetInstance.virtualMachinesReferences.push(virtualMachineReferenceInstance);
var idValue = virtualMachinesValue['id'];
if (idValue !== null && idValue !== undefined) {
var idInstance = idValue;
virtualMachineReferenceInstance.referenceUri = idInstance;
}
}
}
var statusesArray = propertiesValue['statuses'];
if (statusesArray !== null && statusesArray !== undefined) {
for (var loweredIndex2 = 0; loweredIndex2 < statusesArray.length; loweredIndex2 = loweredIndex2 + 1) {
var statusesValue = statusesArray[loweredIndex2];
var instanceViewStatusInstance = {};
availabilitySetInstance.statuses.push(instanceViewStatusInstance);
var codeValue = statusesValue['code'];
if (codeValue !== null && codeValue !== undefined) {
var codeInstance = codeValue;
instanceViewStatusInstance.code = codeInstance;
}
var levelValue = statusesValue['level'];
if (levelValue !== null && levelValue !== undefined) {
var levelInstance = levelValue;
instanceViewStatusInstance.level = levelInstance;
}
var displayStatusValue = statusesValue['displayStatus'];
if (displayStatusValue !== null && displayStatusValue !== undefined) {
var displayStatusInstance = displayStatusValue;
instanceViewStatusInstance.displayStatus = displayStatusInstance;
}
var messageValue = statusesValue['message'];
if (messageValue !== null && messageValue !== undefined) {
var messageInstance = messageValue;
instanceViewStatusInstance.message = messageInstance;
}
var timeValue = statusesValue['time'];
if (timeValue !== null && timeValue !== undefined) {
var timeInstance = timeValue;
instanceViewStatusInstance.time = timeInstance;
}
}
}
}
var idValue2 = responseDoc['id'];
if (idValue2 !== null && idValue2 !== undefined) {
var idInstance2 = idValue2;
availabilitySetInstance.id = idInstance2;
}
var nameValue = responseDoc['name'];
if (nameValue !== null && nameValue !== undefined) {
var nameInstance = nameValue;
availabilitySetInstance.name = nameInstance;
}
var typeValue = responseDoc['type'];
if (typeValue !== null && typeValue !== undefined) {
var typeInstance = typeValue;
availabilitySetInstance.type = typeInstance;
}
var locationValue = responseDoc['location'];
if (locationValue !== null && locationValue !== undefined) {
var locationInstance = locationValue;
availabilitySetInstance.location = locationInstance;
}
var tagsSequenceElement = responseDoc['tags'];
if (tagsSequenceElement !== null && tagsSequenceElement !== undefined) {
for (var property in tagsSequenceElement) {
var tagsKey = property;
var tagsValue = tagsSequenceElement[property];
availabilitySetInstance.tags[tagsKey] = tagsValue;
}
}
}
}
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* The operation to list the availability sets.
*
* @param {string} resourceGroupName The name of the resource group.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
AvailabilitySetOperations.prototype.list = function(resourceGroupName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (resourceGroupName === null || resourceGroupName === undefined) {
return callback(new Error('resourceGroupName cannot be null.'));
}
// Tracing
// Construct URL
var url2 = '';
url2 = url2 + '/subscriptions/';
if (this.client.credentials.subscriptionId !== null && this.client.credentials.subscriptionId !== undefined) {
url2 = url2 + encodeURIComponent(this.client.credentials.subscriptionId);
}
url2 = url2 + '/resourceGroups/';
url2 = url2 + encodeURIComponent(resourceGroupName);
url2 = url2 + '/providers/';
url2 = url2 + 'Microsoft.Compute';
url2 = url2 + '/availabilitySets';
var queryParameters = [];
queryParameters.push('api-version=2015-05-01-preview');
if (queryParameters.length > 0) {
url2 = url2 + '?' + queryParameters.join('&');
}
var baseUrl = this.client.baseUri;
// Trim '/' character from the end of baseUrl and beginning of url.
if (baseUrl[baseUrl.length - 1] === '/') {
baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
}
if (url2[0] === '/') {
url2 = url2.substring(1);
}
url2 = baseUrl + '/' + url2;
url2 = url2.replace(' ', '%20');
// Create HTTP transport objects
var httpRequest = new WebResource();
httpRequest.method = 'GET';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
httpRequest.headers['Content-Type'] = 'application/json';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err !== null && err !== undefined) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 200) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
// Deserialize Response
if (statusCode === 200) {
var responseContent = body;
result = { availabilitySets: [] };
var responseDoc = null;
if (responseContent) {
responseDoc = JSON.parse(responseContent);
}
if (responseDoc !== null && responseDoc !== undefined) {
var valueArray = responseDoc['value'];
if (valueArray !== null && valueArray !== undefined) {
for (var loweredIndex1 = 0; loweredIndex1 < valueArray.length; loweredIndex1 = loweredIndex1 + 1) {
var valueValue = valueArray[loweredIndex1];
var availabilitySetJsonInstance = { statuses: [], tags: {}, virtualMachinesReferences: [] };
result.availabilitySets.push(availabilitySetJsonInstance);
var propertiesValue = valueValue['properties'];
if (propertiesValue !== null && propertiesValue !== undefined) {
var platformUpdateDomainCountValue = propertiesValue['platformUpdateDomainCount'];
if (platformUpdateDomainCountValue !== null && platformUpdateDomainCountValue !== undefined) {
var platformUpdateDomainCountInstance = platformUpdateDomainCountValue;
availabilitySetJsonInstance.platformUpdateDomainCount = platformUpdateDomainCountInstance;
}
var platformFaultDomainCountValue = propertiesValue['platformFaultDomainCount'];
if (platformFaultDomainCountValue !== null && platformFaultDomainCountValue !== undefined) {
var platformFaultDomainCountInstance = platformFaultDomainCountValue;
availabilitySetJsonInstance.platformFaultDomainCount = platformFaultDomainCountInstance;
}
var virtualMachinesArray = propertiesValue['virtualMachines'];
if (virtualMachinesArray !== null && virtualMachinesArray !== undefined) {
for (var loweredIndex2 = 0; loweredIndex2 < virtualMachinesArray.length; loweredIndex2 = loweredIndex2 + 1) {
var virtualMachinesValue = virtualMachinesArray[loweredIndex2];
var virtualMachineReferenceInstance = {};
availabilitySetJsonInstance.virtualMachinesReferences.push(virtualMachineReferenceInstance);
var idValue = virtualMachinesValue['id'];
if (idValue !== null && idValue !== undefined) {
var idInstance = idValue;
virtualMachineReferenceInstance.referenceUri = idInstance;
}
}
}
var statusesArray = propertiesValue['statuses'];
if (statusesArray !== null && statusesArray !== undefined) {
for (var loweredIndex3 = 0; loweredIndex3 < statusesArray.length; loweredIndex3 = loweredIndex3 + 1) {
var statusesValue = statusesArray[loweredIndex3];
var instanceViewStatusInstance = {};
availabilitySetJsonInstance.statuses.push(instanceViewStatusInstance);
var codeValue = statusesValue['code'];
if (codeValue !== null && codeValue !== undefined) {
var codeInstance = codeValue;
instanceViewStatusInstance.code = codeInstance;
}
var levelValue = statusesValue['level'];
if (levelValue !== null && levelValue !== undefined) {
var levelInstance = levelValue;
instanceViewStatusInstance.level = levelInstance;
}
var displayStatusValue = statusesValue['displayStatus'];
if (displayStatusValue !== null && displayStatusValue !== undefined) {
var displayStatusInstance = displayStatusValue;
instanceViewStatusInstance.displayStatus = displayStatusInstance;
}
var messageValue = statusesValue['message'];
if (messageValue !== null && messageValue !== undefined) {
var messageInstance = messageValue;
instanceViewStatusInstance.message = messageInstance;
}
var timeValue = statusesValue['time'];
if (timeValue !== null && timeValue !== undefined) {
var timeInstance = timeValue;
instanceViewStatusInstance.time = timeInstance;
}
}
}
}
var idValue2 = valueValue['id'];
if (idValue2 !== null && idValue2 !== undefined) {
var idInstance2 = idValue2;
availabilitySetJsonInstance.id = idInstance2;
}
var nameValue = valueValue['name'];
if (nameValue !== null && nameValue !== undefined) {
var nameInstance = nameValue;
availabilitySetJsonInstance.name = nameInstance;
}
var typeValue = valueValue['type'];
if (typeValue !== null && typeValue !== undefined) {
var typeInstance = typeValue;
availabilitySetJsonInstance.type = typeInstance;
}
var locationValue = valueValue['location'];
if (locationValue !== null && locationValue !== undefined) {
var locationInstance = locationValue;
availabilitySetJsonInstance.location = locationInstance;
}
var tagsSequenceElement = valueValue['tags'];
if (tagsSequenceElement !== null && tagsSequenceElement !== undefined) {
for (var property in tagsSequenceElement) {
var tagsKey = property;
var tagsValue = tagsSequenceElement[property];
availabilitySetJsonInstance.tags[tagsKey] = tagsValue;
}
}
}
}
}
}
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* Lists virtual-machine-sizes available to be used for an availability set.
*
* @param {string} resourceGroupName The name of the resource group.
*
* @param {string} availabilitySetName The name of the availability set.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
AvailabilitySetOperations.prototype.listAvailableSizes = function(resourceGroupName, availabilitySetName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (resourceGroupName === null || resourceGroupName === undefined) {
return callback(new Error('resourceGroupName cannot be null.'));
}
if (availabilitySetName === null || availabilitySetName === undefined) {
return callback(new Error('availabilitySetName cannot be null.'));
}
// Tracing
// Construct URL
var url2 = '';
url2 = url2 + '/subscriptions/';
if (this.client.credentials.subscriptionId !== null && this.client.credentials.subscriptionId !== undefined) {
url2 = url2 + encodeURIComponent(this.client.credentials.subscriptionId);
}
url2 = url2 + '/resourceGroups/';
url2 = url2 + encodeURIComponent(resourceGroupName);
url2 = url2 + '/providers/';
url2 = url2 + 'Microsoft.Compute';
url2 = url2 + '/availabilitySets/';
url2 = url2 + encodeURIComponent(availabilitySetName);
url2 = url2 + '/vmSizes';
var queryParameters = [];
queryParameters.push('api-version=2015-05-01-preview');
if (queryParameters.length > 0) {
url2 = url2 + '?' + queryParameters.join('&');
}
var baseUrl = this.client.baseUri;
// Trim '/' character from the end of baseUrl and beginning of url.
if (baseUrl[baseUrl.length - 1] === '/') {
baseUrl = baseUrl.substring(0, (baseUrl.length - 1) + 0);
}
if (url2[0] === '/') {
url2 = url2.substring(1);
}
url2 = baseUrl + '/' + url2;
url2 = url2.replace(' ', '%20');
// Create HTTP transport objects
var httpRequest = new WebResource();
httpRequest.method = 'GET';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
httpRequest.headers['Content-Type'] = 'application/json';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err !== null && err !== undefined) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 200) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
// Deserialize Response
if (statusCode === 200) {
var responseContent = body;
result = { virtualMachineSizes: [] };
var responseDoc = null;
if (responseContent) {
responseDoc = JSON.parse(responseContent);
}
if (responseDoc !== null && responseDoc !== undefined) {
var valueArray = responseDoc['value'];
if (valueArray !== null && valueArray !== undefined) {
for (var loweredIndex1 = 0; loweredIndex1 < valueArray.length; loweredIndex1 = loweredIndex1 + 1) {
var valueValue = valueArray[loweredIndex1];
var virtualMachineSizeInstance = {};
result.virtualMachineSizes.push(virtualMachineSizeInstance);
var nameValue = valueValue['name'];
if (nameValue !== null && nameValue !== undefined) {
var nameInstance = nameValue;
virtualMachineSizeInstance.name = nameInstance;
}
var numberOfCoresValue = valueValue['numberOfCores'];
if (numberOfCoresValue !== null && numberOfCoresValue !== undefined) {
var numberOfCoresInstance = numberOfCoresValue;
virtualMachineSizeInstance.numberOfCores = numberOfCoresInstance;
}
var osDiskSizeInMBValue = valueValue['osDiskSizeInMB'];
if (osDiskSizeInMBValue !== null && osDiskSizeInMBValue !== undefined) {
var osDiskSizeInMBInstance = osDiskSizeInMBValue;
virtualMachineSizeInstance.oSDiskSizeInMB = osDiskSizeInM