azure-mgmt-scheduler
Version:
Microsoft Azure Scheduler Management Client Library for node
1,058 lines (930 loc) • 46 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 azureCommon = require('azure-common');
var xml = azureCommon.xml2js;
var js2xml = azureCommon.js2xml;
var Service = azureCommon.Service;
var WebResource = azureCommon.WebResource;
var CloudServiceManagementClient = ( /** @lends CloudServiceManagementClient */ function() {
/**
* @class
* Initializes a new instance of the CloudServiceManagementClient 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 CloudServiceManagementClient(credentials, baseUri, filters) {
if (credentials === null || credentials === undefined) {
throw new Error('credentials cannot be null.');
}
CloudServiceManagementClient['super_'].call(this, credentials, filters);
this.credentials = credentials;
this.baseUri = baseUri;
if (this.baseUri === null || this.baseUri === undefined) {
this.baseUri = 'https://management.core.windows.net';
}
if (this.apiVersion === null || this.apiVersion === undefined) {
this.apiVersion = '2013-03-01';
}
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
* [CloudServiceOperations](-CloudServiceOperations.html) object.
* @type {object}
*/
this.cloudServices = new CloudServiceOperations(this);
}
util.inherits(CloudServiceManagementClient, Service);
/**
* EntitleResource is used only for 3rd party Store providers. Each
* subscription must be entitled for the resource before creating that
* particular type of resource.
*
* @param {EntitleResourceParameters} parameters Parameters provided to the
* EntitleResource method.
*
* @param {string} parameters.resourceNamespace Required NameSpace identifier
* for the resource provider.
*
* @param {string} parameters.resourceType Required type for the resource.
*
* @param {date} parameters.registrationDate The required data when the
* entitlement is performed.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceManagementClient.prototype.entitleResource = function(parameters, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (parameters === null || parameters === undefined) {
return callback(new Error('parameters cannot be null.'));
}
if (parameters.registrationDate === null || parameters.registrationDate === undefined) {
return callback(new Error('parameters.registrationDate cannot be null.'));
}
if (parameters.resourceNamespace === null || parameters.resourceNamespace === undefined) {
return callback(new Error('parameters.resourceNamespace cannot be null.'));
}
if (parameters.resourceType === null || parameters.resourceType === undefined) {
return callback(new Error('parameters.resourceType cannot be null.'));
}
// Tracing
// Construct URL
var url2 = (this.credentials.subscriptionId ? this.credentials.subscriptionId.trim() : '') + '/EntitleResource';
var baseUrl = this.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 = 'POST';
httpRequest.headers = {};
httpRequest.url = url2;
// Set Headers
httpRequest.headers['Content-Type'] = 'application/xml';
httpRequest.headers['x-ms-version'] = '2013-03-01';
// Serialize Request
var requestContent = null;
var requestDoc = {};
var entitleResourceElement = js2xml.createElement('EntitleResource', 'http://schemas.microsoft.com/windowsazure');
js2xml.addChildElement(requestDoc, entitleResourceElement);
var resourceProviderNameSpaceElement = js2xml.createElement('ResourceProviderNameSpace', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(resourceProviderNameSpaceElement, parameters.resourceNamespace);
js2xml.addChildElement(entitleResourceElement, resourceProviderNameSpaceElement);
var typeElement = js2xml.createElement('Type', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(typeElement, parameters.resourceType);
js2xml.addChildElement(entitleResourceElement, typeElement);
var registrationDateElement = js2xml.createElement('RegistrationDate', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(registrationDateElement, parameters.registrationDate.toISOString());
js2xml.addChildElement(entitleResourceElement, registrationDateElement);
requestContent = js2xml.serializeDocument(requestDoc);
httpRequest.body = requestContent;
httpRequest.headers['Content-Length'] = Buffer.isBuffer(requestContent) ? requestContent.length : Buffer.byteLength(requestContent, 'UTF8');
// Send Request
return this.pipeline(httpRequest, function (err, response, body) {
if (err) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 202) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
result = {};
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* The Get Operation Status operation returns the status of thespecified
* operation. After calling an asynchronous operation, you can call Get
* Operation Status to determine whether the operation has succeeded,
* failed, or is still in progress. (see
* http://msdn.microsoft.com/en-us/library/windowsazure/ee460783.aspx for
* more information)
*
* @param {string} requestId The request ID for the request you wish to
* track. The request ID is returned in the x-ms-request-id response header
* for every request.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceManagementClient.prototype.getOperationStatus = function(requestId, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (requestId === null || requestId === undefined) {
return callback(new Error('requestId cannot be null.'));
}
// Tracing
// Construct URL
var url2 = (this.credentials.subscriptionId ? this.credentials.subscriptionId.trim() : '') + '/operations/' + requestId.trim();
var baseUrl = this.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['x-ms-version'] = '2013-03-01';
// Send Request
return this.pipeline(httpRequest, function (err, response, body) {
if (err) {
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
var responseContent = body;
result = {};
var options = {};
options.trim = false;
options.strict = false;
return xml.parseString(responseContent, options, function (err2, responseDoc) {
if (err2) {
return callback(err2);
}
var operationElement = js2xml.getElement(responseDoc, responseDoc, 'OPERATION', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (operationElement) {
var idElement = js2xml.getElement(responseDoc, operationElement, 'ID', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (idElement) {
var idInstance = idElement;
result.id = idInstance;
}
var statusElement = js2xml.getElement(responseDoc, operationElement, 'STATUS', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (statusElement) {
var statusInstance = statusElement;
result.status = statusInstance;
}
var httpStatusCodeElement = js2xml.getElement(responseDoc, operationElement, 'HTTPSTATUSCODE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (httpStatusCodeElement) {
var httpStatusCodeInstance = httpStatusCodeElement;
result.httpStatusCode = httpStatusCodeInstance;
}
var errorElement = js2xml.getElement(responseDoc, operationElement, 'ERROR', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (errorElement) {
var errorInstance = {};
result.error = errorInstance;
var codeElement = js2xml.getElement(responseDoc, errorElement, 'CODE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (codeElement) {
var codeInstance = codeElement;
errorInstance.code = codeInstance;
}
var messageElement = js2xml.getElement(responseDoc, errorElement, 'MESSAGE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (messageElement) {
var messageInstance = messageElement;
errorInstance.message = messageInstance;
}
}
}
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
});
};
return CloudServiceManagementClient;
})();
exports.CloudServiceManagementClient = CloudServiceManagementClient;
var CloudServiceOperations = ( /** @lends CloudServiceOperations */ function() {
/**
* @class
* __NOTE__: An instance of this class is automatically created for an
* instance of the [CloudServiceManagementClient] {@link
* CloudServiceManagementClient~CloudServiceManagementClient}.
* See [cloudServices] {@link
* CloudServiceManagementClient~CloudServiceManagementClient#cloudServices}.
* Initializes a new instance of the CloudServiceOperations class.
* @constructor
*
* @param {CloudServiceManagementClient} client Reference to the service
* client.
*/
function CloudServiceOperations(client) {
this.client = client;
}
/**
* Create a cloud service.
*
* @param {string} cloudServiceName The cloud service name.
*
* @param {CloudServiceCreateParameters} parameters Parameters supplied to
* the Create cloud service operation.
*
* @param {string} parameters.label Label for the cloud service.
*
* @param {string} parameters.description Description for the cloud service.
*
* @param {string} parameters.geoRegion The region for the cloud service.
* This field cannot be updated after the cloud service is created.
*
* @param {string} [parameters.email] Optional e-mail address to associate
* with the service.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceOperations.prototype.beginCreating = function(cloudServiceName, parameters, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (cloudServiceName === null || cloudServiceName === undefined) {
return callback(new Error('cloudServiceName cannot be null.'));
}
if (cloudServiceName.length > 100) {
return callback(new Error('cloudServiceName is outside the valid range.'));
}
if (parameters === null || parameters === undefined) {
return callback(new Error('parameters cannot be null.'));
}
if (parameters.description === null || parameters.description === undefined) {
return callback(new Error('parameters.description cannot be null.'));
}
if (parameters.description.length > 1024) {
return callback(new Error('parameters.description is outside the valid range.'));
}
if (parameters.geoRegion === null || parameters.geoRegion === undefined) {
return callback(new Error('parameters.geoRegion cannot be null.'));
}
if (parameters.label === null || parameters.label === undefined) {
return callback(new Error('parameters.label cannot be null.'));
}
if (parameters.label.length > 100) {
return callback(new Error('parameters.label is outside the valid range.'));
}
// Tracing
// Construct URL
var url2 = (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/CloudServices/' + cloudServiceName.trim();
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/xml';
httpRequest.headers['x-ms-version'] = '2013-03-01';
// Serialize Request
var requestContent = null;
var requestDoc = {};
var cloudServiceElement = js2xml.createElement('CloudService', 'http://schemas.microsoft.com/windowsazure');
js2xml.addChildElement(requestDoc, cloudServiceElement);
var labelElement = js2xml.createElement('Label', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(labelElement, parameters.label);
js2xml.addChildElement(cloudServiceElement, labelElement);
var descriptionElement = js2xml.createElement('Description', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(descriptionElement, parameters.description);
js2xml.addChildElement(cloudServiceElement, descriptionElement);
var geoRegionElement = js2xml.createElement('GeoRegion', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(geoRegionElement, parameters.geoRegion);
js2xml.addChildElement(cloudServiceElement, geoRegionElement);
if (parameters.email) {
var emailElement = js2xml.createElement('Email', 'http://schemas.microsoft.com/windowsazure');
js2xml.setElementValue(emailElement, parameters.email);
js2xml.addChildElement(cloudServiceElement, emailElement);
}
requestContent = js2xml.serializeDocument(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) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 202) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
result = {};
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* Delete a cloud service.
*
* @param {string} cloudServiceName The cloud service name.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceOperations.prototype.beginDeleting = function(cloudServiceName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (cloudServiceName === null || cloudServiceName === undefined) {
return callback(new Error('cloudServiceName cannot be null.'));
}
// Tracing
// Construct URL
var url2 = (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/CloudServices/' + cloudServiceName.trim();
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['x-ms-version'] = '2013-03-01';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err) {
return callback(err);
}
var statusCode = response.statusCode;
if (statusCode !== 202) {
var error = new Error(body);
error.statusCode = response.statusCode;
return callback(error);
}
// Create Result
var result = null;
result = {};
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
};
/**
* Create a cloud service.
*
* @param {string} cloudServiceName The cloud service name.
*
* @param {CloudServiceCreateParameters} parameters Parameters supplied to
* the Create cloud service operation.
*
* @param {string} parameters.label Label for the cloud service.
*
* @param {string} parameters.description Description for the cloud service.
*
* @param {string} parameters.geoRegion The region for the cloud service.
* This field cannot be updated after the cloud service is created.
*
* @param {string} [parameters.email] Optional e-mail address to associate
* with the service.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceOperations.prototype.create = function(cloudServiceName, parameters, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
var client2 = this.client;
return client2.cloudServices.beginCreating(cloudServiceName, parameters, function (err, result) {
if (err) {
return callback(err);
}
var delayInSeconds = 10;
if (client2.longRunningOperationInitialTimeout >= 0) {
delayInSeconds = client2.longRunningOperationInitialTimeout;
}
var pollOperation = function () {
setTimeout(function () {
return client2.getOperationStatus(result.requestId, function (err2, result2) {
if (err2) {
return callback(err2);
} else {
if (result2.status !== 'InProgress') {
if (result2.status !== 'Succeeded') {
if (result2.error) {
var ex = new Error(result2.error.code + ' : ' + result2.error.message);
ex.errorCode = result2.error.code;
ex.errorMessage = result2.error.message;
return callback(ex);
} else {
var ex = new Error('');
return callback(ex);
}
}
return callback(null, result2);
} else {
delayInSeconds = 5;
if (client2.longRunningOperationRetryTimeout >= 0) {
delayInSeconds = client2.longRunningOperationRetryTimeout;
}
pollOperation();
}
}
});
}, delayInSeconds * 1000);
};
pollOperation();
});
};
/**
* Delete a cloud service.
*
* @param {string} cloudServiceName The cloud service name.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceOperations.prototype.delete = function(cloudServiceName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
var client2 = this.client;
return client2.cloudServices.beginDeleting(cloudServiceName, function (err, result) {
if (err) {
return callback(err);
}
var delayInSeconds = 10;
if (client2.longRunningOperationInitialTimeout >= 0) {
delayInSeconds = client2.longRunningOperationInitialTimeout;
}
var pollOperation = function () {
setTimeout(function () {
return client2.getOperationStatus(result.requestId, function (err2, result2) {
if (err2) {
return callback(err2);
} else {
if (result2.status !== 'InProgress') {
if (result2.status !== 'Succeeded') {
if (result2.error) {
var ex = new Error(result2.error.code + ' : ' + result2.error.message);
ex.errorCode = result2.error.code;
ex.errorMessage = result2.error.message;
return callback(ex);
} else {
var ex = new Error('');
return callback(ex);
}
}
return callback(null, result2);
} else {
delayInSeconds = 5;
if (client2.longRunningOperationRetryTimeout >= 0) {
delayInSeconds = client2.longRunningOperationRetryTimeout;
}
pollOperation();
}
}
});
}, delayInSeconds * 1000);
};
pollOperation();
});
};
/**
* Retreive a cloud service.
*
* @param {string} cloudServiceName The cloud service name.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceOperations.prototype.get = function(cloudServiceName, callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
if (cloudServiceName === null || cloudServiceName === undefined) {
return callback(new Error('cloudServiceName cannot be null.'));
}
if (cloudServiceName.length > 100) {
return callback(new Error('cloudServiceName is outside the valid range.'));
}
// Tracing
// Construct URL
var url2 = (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/CloudServices/' + cloudServiceName.trim();
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['x-ms-version'] = '2013-03-01';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err) {
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
var responseContent = body;
result = { resources: [] };
var options = {};
options.trim = false;
options.strict = false;
return xml.parseString(responseContent, options, function (err2, responseDoc) {
if (err2) {
return callback(err2);
}
var cloudServiceElement = js2xml.getElement(responseDoc, responseDoc, 'CLOUDSERVICE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (cloudServiceElement) {
var geoLocationElement = js2xml.getElement(responseDoc, cloudServiceElement, 'GEOLOCATION', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (geoLocationElement) {
var geoLocationInstance = geoLocationElement;
result.geoLocation = geoLocationInstance;
}
var resourcesSequenceElement = js2xml.getElement(responseDoc, cloudServiceElement, 'RESOURCES', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (resourcesSequenceElement) {
for (var loweredIndex1 = 0; loweredIndex1 < js2xml.getElements(responseDoc, resourcesSequenceElement, 'RESOURCE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE').length; loweredIndex1 = loweredIndex1 + 1) {
var resourcesElement = js2xml.getElements(responseDoc, resourcesSequenceElement, 'RESOURCE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE')[loweredIndex1];
var resourceInstance = { outputItems: {} };
result.resources.push(resourceInstance);
var resourceProviderNamespaceElement = js2xml.getElement(responseDoc, resourcesElement, 'RESOURCEPROVIDERNAMESPACE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (resourceProviderNamespaceElement) {
var resourceProviderNamespaceInstance = resourceProviderNamespaceElement;
resourceInstance.resourceProviderNamespace = resourceProviderNamespaceInstance;
}
var typeElement = js2xml.getElement(responseDoc, resourcesElement, 'TYPE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (typeElement) {
var typeInstance = typeElement;
resourceInstance.type = typeInstance;
}
var eTagElement = js2xml.getElement(responseDoc, resourcesElement, 'ETAG', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (eTagElement) {
var eTagInstance = eTagElement;
resourceInstance.eTag = eTagInstance;
}
var schemaVersionElement = js2xml.getElement(responseDoc, resourcesElement, 'SCHEMAVERSION', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (schemaVersionElement) {
var schemaVersionInstance = schemaVersionElement;
resourceInstance.schemaVersion = schemaVersionInstance;
}
var nameElement = js2xml.getElement(responseDoc, resourcesElement, 'NAME', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (nameElement) {
var nameInstance = nameElement;
resourceInstance.name = nameInstance;
}
var planElement = js2xml.getElement(responseDoc, resourcesElement, 'PLAN', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (planElement) {
var planInstance = planElement;
resourceInstance.plan = planInstance;
}
var outputItemsSequenceElement = js2xml.getElement(responseDoc, resourcesElement, 'OUTPUTITEMS', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (outputItemsSequenceElement) {
for (var loweredIndex2 = 0; loweredIndex2 < js2xml.getElements(responseDoc, outputItemsSequenceElement, 'OUTPUTITEM', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE').length; loweredIndex2 = loweredIndex2 + 1) {
var outputItemsElement = js2xml.getElements(responseDoc, outputItemsSequenceElement, 'OUTPUTITEM', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE')[loweredIndex2];
var outputItemsKey = js2xml.getElement(responseDoc, outputItemsElement, 'KEY', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
var outputItemsValue = js2xml.getElement(responseDoc, outputItemsElement, 'VALUE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
resourceInstance.outputItems[outputItemsKey] = outputItemsValue;
}
}
var stateElement = js2xml.getElement(responseDoc, resourcesElement, 'STATE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (stateElement) {
var stateInstance = stateElement;
resourceInstance.state = stateInstance;
}
var subStateElement = js2xml.getElement(responseDoc, resourcesElement, 'SUBSTATE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (subStateElement) {
var subStateInstance = subStateElement;
resourceInstance.subState = subStateInstance;
}
var labelElement = js2xml.getElement(responseDoc, resourcesElement, 'LABEL', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (labelElement) {
var labelInstance = labelElement;
resourceInstance.label = labelInstance;
}
}
}
}
result.statusCode = statusCode;
return callback(null, result);
});
});
};
/**
* The List Cloud Services operation enumerates services that are provisioned
* for a subscription.
*
* @param {function} callback
*
* @returns {Stream} The response stream.
*/
CloudServiceOperations.prototype.list = function(callback) {
if (callback === null || callback === undefined) {
throw new Error('callback cannot be null.');
}
// Validate
// Tracing
// Construct URL
var url2 = (this.client.credentials.subscriptionId ? this.client.credentials.subscriptionId.trim() : '') + '/CloudServices';
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['x-ms-version'] = '2013-03-01';
// Send Request
return this.client.pipeline(httpRequest, function (err, response, body) {
if (err) {
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
var responseContent = body;
result = { cloudServices: [] };
var options = {};
options.trim = false;
options.strict = false;
return xml.parseString(responseContent, options, function (err2, responseDoc) {
if (err2) {
return callback(err2);
}
var cloudServicesSequenceElement = js2xml.getElement(responseDoc, responseDoc, 'CLOUDSERVICES', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (cloudServicesSequenceElement) {
for (var loweredIndex1 = 0; loweredIndex1 < js2xml.getElements(responseDoc, cloudServicesSequenceElement, 'CLOUDSERVICE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE').length; loweredIndex1 = loweredIndex1 + 1) {
var cloudServicesElement = js2xml.getElements(responseDoc, cloudServicesSequenceElement, 'CLOUDSERVICE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE')[loweredIndex1];
var cloudServiceInstance = { resources: [] };
result.cloudServices.push(cloudServiceInstance);
var nameElement = js2xml.getElement(responseDoc, cloudServicesElement, 'NAME', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (nameElement) {
var nameInstance = nameElement;
cloudServiceInstance.name = nameInstance;
}
var labelElement = js2xml.getElement(responseDoc, cloudServicesElement, 'LABEL', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (labelElement) {
var labelInstance = labelElement;
cloudServiceInstance.label = labelInstance;
}
var descriptionElement = js2xml.getElement(responseDoc, cloudServicesElement, 'DESCRIPTION', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (descriptionElement) {
var descriptionInstance = descriptionElement;
cloudServiceInstance.description = descriptionInstance;
}
var geoRegionElement = js2xml.getElement(responseDoc, cloudServicesElement, 'GEOREGION', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (geoRegionElement) {
var geoRegionInstance = geoRegionElement;
cloudServiceInstance.geoRegion = geoRegionInstance;
}
var resourcesSequenceElement = js2xml.getElement(responseDoc, cloudServicesElement, 'RESOURCES', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (resourcesSequenceElement) {
for (var loweredIndex2 = 0; loweredIndex2 < js2xml.getElements(responseDoc, resourcesSequenceElement, 'RESOURCE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE').length; loweredIndex2 = loweredIndex2 + 1) {
var resourcesElement = js2xml.getElements(responseDoc, resourcesSequenceElement, 'RESOURCE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE')[loweredIndex2];
var resourceInstance = { outputItems: {}, usageLimits: [] };
cloudServiceInstance.resources.push(resourceInstance);
var resourceProviderNamespaceElement = js2xml.getElement(responseDoc, resourcesElement, 'RESOURCEPROVIDERNAMESPACE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (resourceProviderNamespaceElement) {
var resourceProviderNamespaceInstance = resourceProviderNamespaceElement;
resourceInstance.namespace = resourceProviderNamespaceInstance;
}
var typeElement = js2xml.getElement(responseDoc, resourcesElement, 'TYPE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (typeElement) {
var typeInstance = typeElement;
resourceInstance.type = typeInstance;
}
var nameElement2 = js2xml.getElement(responseDoc, resourcesElement, 'NAME', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (nameElement2) {
var nameInstance2 = nameElement2;
resourceInstance.name = nameInstance2;
}
var planElement = js2xml.getElement(responseDoc, resourcesElement, 'PLAN', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (planElement) {
var planInstance = planElement;
resourceInstance.plan = planInstance;
}
var schemaVersionElement = js2xml.getElement(responseDoc, resourcesElement, 'SCHEMAVERSION', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (schemaVersionElement) {
var schemaVersionInstance = schemaVersionElement;
resourceInstance.schemaVersion = schemaVersionInstance;
}
var eTagElement = js2xml.getElement(responseDoc, resourcesElement, 'ETAG', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (eTagElement) {
var eTagInstance = eTagElement;
resourceInstance.eTag = eTagInstance;
}
var stateElement = js2xml.getElement(responseDoc, resourcesElement, 'STATE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (stateElement) {
var stateInstance = stateElement;
resourceInstance.state = stateInstance;
}
var usageMetersSequenceElement = js2xml.getElement(responseDoc, resourcesElement, 'USAGEMETERS', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (usageMetersSequenceElement) {
for (var loweredIndex3 = 0; loweredIndex3 < js2xml.getElements(responseDoc, usageMetersSequenceElement, 'USAGEMETER', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE').length; loweredIndex3 = loweredIndex3 + 1) {
var usageMetersElement = js2xml.getElements(responseDoc, usageMetersSequenceElement, 'USAGEMETER', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE')[loweredIndex3];
var usageMeterInstance = {};
resourceInstance.usageLimits.push(usageMeterInstance);
var nameElement3 = js2xml.getElement(responseDoc, usageMetersElement, 'NAME', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (nameElement3) {
var nameInstance3 = nameElement3;
usageMeterInstance.name = nameInstance3;
}
var unitElement = js2xml.getElement(responseDoc, usageMetersElement, 'UNIT', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (unitElement) {
var unitInstance = unitElement;
usageMeterInstance.unit = unitInstance;
}
var includedElement = js2xml.getElement(responseDoc, usageMetersElement, 'INCLUDED', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (includedElement) {
var includedInstance = includedElement;
usageMeterInstance.amountIncluded = includedInstance;
}
var usedElement = js2xml.getElement(responseDoc, usageMetersElement, 'USED', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (usedElement) {
var usedInstance = usedElement;
usageMeterInstance.amountUsed = usedInstance;
}
}
}
var outputItemsSequenceElement = js2xml.getElement(responseDoc, resourcesElement, 'OUTPUTITEMS', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (outputItemsSequenceElement) {
for (var loweredIndex4 = 0; loweredIndex4 < js2xml.getElements(responseDoc, outputItemsSequenceElement, 'OUTPUTITEM', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE').length; loweredIndex4 = loweredIndex4 + 1) {
var outputItemsElement = js2xml.getElements(responseDoc, outputItemsSequenceElement, 'OUTPUTITEM', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE')[loweredIndex4];
var outputItemsKey = js2xml.getElement(responseDoc, outputItemsElement, 'KEY', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
var outputItemsValue = js2xml.getElement(responseDoc, outputItemsElement, 'VALUE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
resourceInstance.outputItems[outputItemsKey] = outputItemsValue;
}
}
var operationStatusElement = js2xml.getElement(responseDoc, resourcesElement, 'OPERATIONSTATUS', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (operationStatusElement) {
var operationStatusInstance = {};
resourceInstance.status = operationStatusInstance;
var typeElement2 = js2xml.getElement(responseDoc, operationStatusElement, 'TYPE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (typeElement2) {
var typeInstance2 = typeElement2;
operationStatusInstance.type = typeInstance2;
}
var resultElement = js2xml.getElement(responseDoc, operationStatusElement, 'RESULT', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (resultElement) {
var resultInstance = resultElement;
operationStatusInstance.result = resultInstance;
}
var errorElement = js2xml.getElement(responseDoc, operationStatusElement, 'ERROR', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (errorElement) {
var errorInstance = {};
operationStatusInstance.error = errorInstance;
var httpCodeElement = js2xml.getElement(responseDoc, errorElement, 'HTTPCODE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (httpCodeElement) {
var httpCodeInstance = httpCodeElement;
errorInstance.httpCode = httpCodeInstance;
}
var messageElement = js2xml.getElement(responseDoc, errorElement, 'MESSAGE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (messageElement) {
var messageInstance = messageElement;
errorInstance.message = messageInstance;
}
var extendedCodeElement = js2xml.getElement(responseDoc, errorElement, 'EXTENDEDCODE', 'HTTP://SCHEMAS.MICROSOFT.COM/WINDOWSAZURE');
if (extendedCodeElement) {
var extendedCodeInstance = extendedCodeElement;
errorInstance.extendedCode = extendedCodeInstance;
}
}
}
}
}
}
}
result.statusCode = statusCode;
result.requestId = response.headers['x-ms-request-id'];
return callback(null, result);
});
});
};
return CloudServiceOperations;
})();