UNPKG

azure-mgmt-scheduler

Version:

Microsoft Azure Scheduler Management Client Library for node

1,058 lines (930 loc) 46 kB
/* 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; })();