UNPKG

azure-cli

Version:

Microsoft Azure Cross Platform Command Line tool

545 lines (321 loc) 24.7 kB
/*** Generated by streamline 0.10.17 (callbacks) - DO NOT EDIT ***/ "use strict"; var __rt=require('streamline/lib/callbacks/runtime').runtime(__filename, false),__func=__rt.__func,__cb=__rt.__cb; var __ = require("underscore"); var fs = require("fs"); var path = require("path"); var request = require("request"); var through = require("through"); var util = require("util"); var validation = require("../../../util/validation"); var profile = require("../../../util/profile"); var utils = require("../../../util/utils"); var jsonlint = require("jsonlint"); var jsonminify = require("jsonminify"); var $ = utils.getLocaleString; exports.getGroup = function getGroup(client, name, callback) { client.resourceGroups.get(name, function(err, group) { if (err) { if ((err.statusCode === 404)) { callback(null, null); } else { callback(err); } ; } else { callback(null, group); } ; });}; exports.getResource = function getResource(client, resourceGroup, identity, callback) { client.resources.get(resourceGroup, identity.resourceProviderNamespace, identity.parentResourcePath, identity.resourceType, identity.resourceName, identity.resourceProviderApiVersion, function(err, resource) { if (err) { if ((err.statusCode === 404)) { callback(null, null); } else { callback(err); } ; } else { callback(null, resource); } ; });}; exports.createDeployment = function exports_createDeployment__1(cli, resourceGroup, name, options, _) { var subscription, client, templateParameters, templateName, baseTemplateName, result; var __frame = { name: "exports_createDeployment__1", line: 71 }; return __func(_, this, arguments, exports_createDeployment__1, 4, __frame, function __$exports_createDeployment__1() { subscription = profile.current.getSubscription(options.subscription); client = utils.createResourceClient(subscription); return createDeploymentParameters(cli, subscription, resourceGroup, options, __cb(_, __frame, 4, 27, function ___(__0, __2) { templateParameters = __2; if (!name) { templateName = (options.templateFile || options.templateUri); templateName = sanitizeTemplateName(templateName); baseTemplateName = path.basename(templateName); if (utils.stringEndsWith(baseTemplateName, ".json", true)) { baseTemplateName = path.basename(baseTemplateName, path.extname(baseTemplateName)); } ; name = baseTemplateName; } ; return cli.interaction.withProgress($("Creating a deployment"), function __1(log, _) { var response; var __frame = { name: "__1", line: 92 }; return __func(_, this, arguments, __1, 1, __frame, function __$__1() { return client.deployments.validate(resourceGroup, name, templateParameters, __cb(_, __frame, 1, 40, function ___(__0, __1) { response = __1; if (response.error) { log.error(util.format($("%s : %s"), response.error.code, response.error.message)); if (response.error.details) { response.error.details.forEach(function(detail) { displayNestedErrorDetailMessage(log, detail); }); } ; return _(new Error("Deployment validate failed.")); } ; return client.deployments.beginCreateOrUpdate(resourceGroup, name, templateParameters, __cb(_, __frame, 13, 32, _, true)); }, true)); }); }, __cb(_, __frame, 20, 31, function ___(__0, __3) { result = __3; cli.output.info(util.format($("Created template deployment \"%s\""), name)); return _(null, result); }, true)); }, true)); });}; exports.validateTemplate = function exports_validateTemplate__2(cli, resourceGroup, options, log, _) { var subscription, client, templateParameters, response; var __frame = { name: "exports_validateTemplate__2", line: 113 }; return __func(_, this, arguments, exports_validateTemplate__2, 4, __frame, function __$exports_validateTemplate__2() { subscription = profile.current.getSubscription(options.subscription); client = utils.createResourceClient(subscription); return createDeploymentParameters(cli, subscription, resourceGroup, options, __cb(_, __frame, 4, 27, function ___(__0, __2) { templateParameters = __2; return cli.interaction.withProgress($("Validating the template"), function __1(log, _) { var __frame = { name: "__1", line: 120 }; return __func(_, this, arguments, __1, 1, __frame, function __$__1() { return client.deployments.validate(resourceGroup, "fakedDeploymentName", templateParameters, __cb(_, __frame, 1, 32, _, true)); }); }, __cb(_, __frame, 6, 33, function ___(__0, __3) { response = __3; response.requiredProviders = getTemplateProviders(response); if (response.error) { log.error(util.format($("%s : %s"), response.error.code, response.error.message)); if (response.error.details) { response.error.details.forEach(function(detail) { displayNestedErrorDetailMessage(log, detail); }); } ; } ; return _(null, response); }, true)); }, true)); });}; exports.getTemplateDownloadUrl = function getTemplateDownloadUrl(templateData) { var urls = []; templateData.artifacts.forEach(function(e) { if ((e.type === "template")) { urls.push({ name: e.name, uri: e.uri }); } ; }); return urls;}; exports.getAllEvents = function(subscription, groupName) { var output = through(); var client = utils.createEventsClient(subscription); client.eventData.listEventsForResourceGroup({ resourceGroupName: groupName, startTime: new Date((Date.now() - eventRetentionPeriodMS)), endTime: new Date() }, function(err, response) { if (err) { return output.emit("error", err); } ; response.eventDataCollection.value.forEach(function(e) { output.queue(e); }); output.end(); }); return output;}; exports.getDeploymentLog = function(subscription, name, deploymentName) { var output = through(); var client = utils.createResourceClient(subscription); client.deployments.get(name, deploymentName, function(err, result) { if (err) { return output.emit("error", err); } ; getDeploymentLogs(subscription, result.properties.correlationId).pipe(output); }); return output;}; exports.getLastDeploymentLog = function(subscription, name) { var output = through(); var client = utils.createResourceClient(subscription); client.deployments.list(name, { top: 1 }, function(err, response) { if (err) { return output.emit("error", err); } ; if ((response.length === 0)) { output.emit("error", new Error($("Deployment not found"))); } ; getDeploymentLogs(subscription, response[0].properties.correlationId).pipe(output); }); return output;}; exports.normalizeDownloadFileName = function normalizeDownloadFileName(downloadFile, quiet, confirmer, callback) { function ensureDirExists(dirname) { if (!dirname) { return; } ; if (utils.pathExistsSync(dirname)) { if (!fs.statSync(dirname).isDirectory()) { throw new Error(util.format($("Path %s already exists and is not a directory."), dirname)); } ; return; } ; ensureDirExists(path.dirname(dirname)); fs.mkdirSync(dirname); }; try { ensureDirExists(path.dirname(downloadFile)); if ((utils.pathExistsSync(downloadFile) && !quiet)) { confirmer(util.format($("The file %s already exists. Overwrite? [y/n]: "), downloadFile), function(err, confirmed) { if (confirmed) { callback(null, downloadFile); } else { callback(null, null); } ; }); } else { callback(null, downloadFile); } ; } catch (ex) { callback(ex); };}; function sanitizeTemplateName(templateName) { return templateName.split("?")[0];}; function createDeploymentParameters(cli, subscription, resourceGroup, options, _) { var templateOptions, templateOptionsProvided, deploymentParameters, missingObj, jsonFile, templateParams, templateParameters; var __frame = { name: "createDeploymentParameters", line: 242 }; return __func(_, this, arguments, createDeploymentParameters, 4, __frame, function __$createDeploymentParameters() { templateOptions = [options.templateFile,options.templateUri,]; templateOptionsProvided = templateOptions.filter(function(value) { return (value !== undefined); }).length; if ((templateOptionsProvided > 1)) { return _(new Error($("Specify exactly one of the --template-file, or template-uri options."))); } else { if ((templateOptionsProvided === 0)) { return _(new Error($("One of the --template-file, or --template-uri options is required."))); } ; } ; if ((options.parameters && options.parametersFile)) { return _(new Error($("Either --parameters or --parameters-file need to be specified. Not both."))); } ; return (function __$createDeploymentParameters(__then) { if (options.parametersFile) { jsonFile = fs.readFileSync(options.parametersFile, "utf8"); deploymentParameters = parsedContent(utils.stripBOM(jsonFile)); if (deploymentParameters.parameters) { deploymentParameters = deploymentParameters.parameters; } ; return missingParameters(deploymentParameters, options, subscription, __cb(_, __frame, 21, 17, function ___(__0, __2) { missingObj = __2; return addMissingParameters(missingObj, deploymentParameters, cli, subscription, options, __cb(_, __frame, 22, 4, __then, true)); }, true)); } else { return (function __$createDeploymentParameters(__then) { if (options.parameters) { deploymentParameters = parsedContent(options.parameters); return missingParameters(deploymentParameters, options, subscription, __cb(_, __frame, 25, 19, function ___(__0, __3) { missingObj = __3; return addMissingParameters(missingObj, deploymentParameters, cli, subscription, options, __cb(_, __frame, 26, 4, __then, true)); }, true)); } else { return templateContent(options, subscription, __cb(_, __frame, 28, 25, function ___(__0, __4) { templateParams = __4.parameters; return getTheMissingParameters(cli, deploymentParameters, templateParams, subscription, options, __cb(_, __frame, 29, 27, function ___(__0, __5) { deploymentParameters = __5; __then(); }, true)); }, true)); } ; })(__then); } ; })(function __$createDeploymentParameters() { templateParameters = { }; if (options.mode) { templateParameters["properties"] = { mode: options.mode.toString() }; } else { templateParameters["properties"] = { mode: "Incremental" }; } ; if (options.debugSetting) { switch (options.debugSetting.toString().toLowerCase()) { case "requestcontent": templateParameters["properties"]["debugSetting"] = { detailLevel: "RequestContent" }; break; case "responsecontent": templateParameters["properties"]["debugSetting"] = { detailLevel: "ResponseContent" }; break; case "all": templateParameters["properties"]["debugSetting"] = { detailLevel: "RequestContent,ResponseContent" }; break; default: break; }; } ; return cli.interaction.withProgress($("Initializing template configurations and parameters"), function __1(log, _) { var templateUri, templateContent; var __frame = { name: "__1", line: 302 }; return __func(_, this, arguments, __1, 1, __frame, function __$__1() { templateUri = options.templateUri; return (function __$__1(__then) { if (!templateUri) { return getTemplateContent(subscription, options.templateFile, __cb(_, __frame, 4, 30, function ___(__0, __1) { templateContent = __1; templateParameters["properties"]["template"] = templateContent; __then(); }, true)); } else { templateParameters["properties"]["templateLink"] = { uri: templateUri }; if (options.templateVersion) { templateParameters.properties.templateLink.contentVersion = options.templateVersion; } ; __then(); } ; })(function __$__1() { if (deploymentParameters) { templateParameters.properties.parameters = deploymentParameters; } ; _(); }); }); }, __cb(_, __frame, 59, 18, function __$createDeploymentParameters() { return _(null, templateParameters); }, true)); }); });}; var eventRetentionPeriodMS = ((((89 * 24) * 60) * 60) * 1000); function getDeploymentLogs(subscription, correlationId) { var output = through(); var client = utils.createEventsClient(subscription); client.eventData.listEventsForCorrelationId({ correlationId: correlationId, startTime: new Date((Date.now() - eventRetentionPeriodMS)), endTime: new Date() }, function(err, response) { if (err) { return output.emit("error", err); } ; response.eventDataCollection.value.forEach(function(e) { output.queue(e); }); output.end(); }); return output;}; function getTemplateProviders(validationResponse) { if ((validationResponse.properties && validationResponse.properties.providers)) { return __.map(validationResponse.properties.providers, function(provider) { if (provider.namespace) { return provider.namespace.toLowerCase(); } ; }); } ;}; function getTemplateContent(subscription, templateFile, _) { var templateFileUri, content; function readTemplateFileContentFromUri(templateFileUri, callback) { request(templateFileUri, function(error, response, body) { callback(error, body); }); }; var __frame = { name: "getTemplateContent", line: 354 }; return __func(_, this, arguments, getTemplateContent, 2, __frame, function __$getTemplateContent() { if (templateFile) { if (validation.isURL(templateFile)) { templateFileUri = templateFile; } ; } ; content = { }; return (function __$getTemplateContent(__then) { if (templateFileUri) { return readTemplateFileContentFromUri(templateFileUri, __cb(_, __frame, 16, 14, function ___(__0, __1) { content = __1; __then(); }, true)); } else { if (templateFile) { content = utils.stripBOM(fs.readFileSync(templateFile)); } ; __then(); } ; })(function __$getTemplateContent() { return _(null, parsedContent(content)); }); });}; function parsedContent(content) { var hasNoComments = ((findLocation(content).locations.length === 0) ? true : false); try { jsonlint.parse(jsonminify(content)); } catch (e) { try { jsonlint.parse(content); } catch (e2) { if (hasNoComments) { return jsonlint.parse(content); } else { throw estimatedErrorLine(content, e); } ; }; }; try { return JSON.parse(jsonminify(content)); } catch (e) { return e.message; };}; function estimatedErrorLine(content, e) { var message = e.message.split("\n"); var length = message[2].length; var minified = jsonminify(content); var substring = message[1].slice((length - 1), (message[1].length - 1)); var location = findLocation(content, minified.indexOf(substring)).count; return ((((("Error around lines: " + (location).toString()) + " - ") + ((location + 6)).toString()) + ". Error string: ") + substring);}; function findLocation(content, breaker) { var possible = { }; possible.count = 0; possible.locations = []; breaker = ((breaker === undefined) ? content.split("").length : breaker); content.split("").forEach(function(char, idx) { if ((idx <= breaker)) { if ((char === "\n")) { possible.count += 1; } ; if ((((content[(idx - 1)] !== ":") && (char === "/")) && (((content[(idx + 1)] === "/") || (content[(idx + 1)] === "*"))))) { possible.locations.push(possible.count); } ; } ; }); return possible;}; function templateContent(options, subscription, _) { var __frame = { name: "templateContent", line: 428 }; return __func(_, this, arguments, templateContent, 2, __frame, function __$templateContent() { return (function __$templateContent(_) { var __1 = options.templateFile; return (function __$templateContent(__then) { if (__1) { return getTemplateContent(subscription, options.templateFile, __cb(_, __frame, 2, 4, _, true)); } else { __then(); } ; })(function __$templateContent() { return getTemplateContent(subscription, options.templateUri, __cb(_, __frame, 3, 4, _, true)); }); })(__cb(_, __frame, -427, 17, _, true)); });}; function getTemplateParams(cli, parametersObj, subscription, options, _) { var paramKeys; var __frame = { name: "getTemplateParams", line: 434 }; return __func(_, this, arguments, getTemplateParams, 4, __frame, function __$getTemplateParams() { paramKeys = { }; return (function __$getTemplateParams(__then) { if (parametersObj) { return Object.keys(parametersObj).forEach_(__cb(_, __frame, 3, 31, __then, true), 1, function __1(_, param) { var __frame = { name: "__1", line: 437 }; return __func(_, this, arguments, __1, 0, __frame, function __$__1() { paramKeys[param] = parametersObj[param].defaultValue; return (function __$__1(__then) { if (!parametersObj[param].defaultValue) { return cli.interaction.promptIfNotGiven((param + ": "), paramKeys[param], __cb(_, __frame, 3, 43, function ___(__0, __1) { paramKeys[param] = __1; switch (parametersObj[param].type.toLowerCase()) { case "int": paramKeys[param] = utils.parseInt(paramKeys[param]); break; case "object": case "bool": case "array": paramKeys[param] = jsonlint.parse(paramKeys[param]); break; }; __then(); }, true)); } else { __then(); } ; })(_); }); }); } else { __then(); } ; })(function __$getTemplateParams() { return _(null, paramKeys); }); });}; function missingParameters(userParameters, options, subscription, _) { var templateContent, templateParameters, nonDefaultParameters, missingUserParameters, missingObj; var __frame = { name: "missingParameters", line: 458 }; return __func(_, this, arguments, missingParameters, 3, __frame, function __$missingParameters() { return (function __$missingParameters(_) { var __1 = options.templateFile; return (function __$missingParameters(__then) { if (__1) { return getTemplateContent(subscription, options.templateFile, __cb(_, __frame, 2, 4, _, true)); } else { __then(); } ; })(function __$missingParameters() { return getTemplateContent(subscription, options.templateUri, __cb(_, __frame, 3, 4, _, true)); }); })(__cb(_, __frame, -457, 17, function ___(__0, __2) { templateContent = __2; templateParameters = __.keys(templateContent.parameters); nonDefaultParameters = templateParameters.filter(function(parameter) { return (templateContent.parameters[parameter].defaultValue === undefined); }); missingUserParameters = nonDefaultParameters.filter(function(parameter) { try { if (userParameters[parameter].reference) { var secretName = userParameters[parameter].reference.secretName; var keyVaultId; if (userParameters[parameter].reference.keyVault) { keyVaultId = userParameters[parameter].reference.keyVault.id; } ; return (utils.stringIsNullOrEmpty(secretName) || utils.stringIsNullOrEmpty(keyVaultId)); } else { return !userParameters[parameter].value; } ; } catch (e) { return true; }; }); missingObj = { }; missingObj.parameters = { }; missingUserParameters.forEach(function(missing) { missingObj.parameters[missing] = (userParameters[missing] || { }); missingObj.parameters[missing].type = templateContent.parameters[missing].type; missingObj.parameters[missing].metadata = (templateContent.parameters[missing].metadata || { }); }); return _(null, missingObj); }, true)); });}; function getTheMissingParameters(cli, deploymentParameters, missing, subscription, options, _) { var log, paramsRequired; var __frame = { name: "getTheMissingParameters", line: 492 }; return __func(_, this, arguments, getTheMissingParameters, 5, __frame, function __$getTheMissingParameters() { log = cli.output; log.info("Supply values for the following parameters"); return getTemplateParams(cli, missing, subscription, options, __cb(_, __frame, 3, 25, function ___(__0, __2) { paramsRequired = __2; deploymentParameters = { }; return Object.keys(paramsRequired).forEach_(__cb(_, __frame, 6, 32, function __$getTheMissingParameters() { return _(null, deploymentParameters); }, true), 1, function __1(_, key) { var val; var __frame = { name: "__1", line: 498 }; return __func(_, this, arguments, __1, 0, __frame, function __$__1() { val = { }; val["value"] = paramsRequired[key]; deploymentParameters[key] = val; _(); }); }); }, true)); });}; function addMissingParameters(missingObj, deploymentParameters, cli, subscription, options, _) { var newParameters; var __frame = { name: "addMissingParameters", line: 506 }; return __func(_, this, arguments, addMissingParameters, 5, __frame, function __$addMissingParameters() { return (function __$addMissingParameters(__then) { if ((missingObj.parameters && (Object.keys(missingObj.parameters).length > 0))) { return getTheMissingParameters(cli, deploymentParameters, missingObj.parameters, subscription, options, __cb(_, __frame, 2, 26, function ___(__0, __1) { newParameters = __1; deploymentParameters = __.extend(deploymentParameters, newParameters); __then(); }, true)); } else { __then(); } ; })(function __$addMissingParameters() { return _(null, deploymentParameters); }); });}; exports.getFailedDeploymentOperations = function exports_getFailedDeploymentOperations__3(subscription, resourceGroup, deploymentName, _) { var currentSubscription, client, operations, failedOperations; var __frame = { name: "exports_getFailedDeploymentOperations__3", line: 514 }; return __func(_, this, arguments, exports_getFailedDeploymentOperations__3, 3, __frame, function __$exports_getFailedDeploymentOperations__3() { currentSubscription = profile.current.getSubscription(subscription); client = utils.createResourceClient(currentSubscription); return client.deploymentOperations.list(resourceGroup, deploymentName, __cb(_, __frame, 3, 47, function ___(__0, __1) { operations = __1; return getFailedNestedOperations(client, resourceGroup, operations, __cb(_, __frame, 4, 25, function ___(__0, __2) { failedOperations = __2; return _(null, failedOperations); }, true)); }, true)); });}; function getFailedNestedOperations(client, resourceGroup, currentOperations, _) { var newOperations; var __frame = { name: "getFailedNestedOperations", line: 522 }; return __func(_, this, arguments, getFailedNestedOperations, 3, __frame, function __$getFailedNestedOperations() { newOperations = []; return currentOperations.forEach_(__cb(_, __frame, 2, 20, function __$getFailedNestedOperations() { return _(null, newOperations); }, true), 1, function __1(_, operation) { var nestedDeployment, nestedOperations, newNestedOperations; var __frame = { name: "__1", line: 524 }; return __func(_, this, arguments, __1, 0, __frame, function __$__1() { return (function __$__1(__then) { if ((operation.properties.provisioningState === "Failed")) { newOperations.push(operation); return (function __$__1(__then) { if ((operation.properties.targetResource && (operation.properties.targetResource.id.indexOf("Microsoft.Resources/deployments") !== -1))) { nestedDeployment = operation.properties.targetResource.resourceName; return client.deploymentOperations.list(resourceGroup, nestedDeployment, __cb(_, __frame, 6, 59, function ___(__0, __1) { nestedOperations = __1; return getFailedNestedOperations(client, resourceGroup, nestedOperations, __cb(_, __frame, 7, 34, function ___(__0, __2) { newNestedOperations = __2; newOperations = newOperations.concat(newNestedOperations); __then(); }, true)); }, true)); } else { __then(); } ; })(__then); } else { __then(); } ; })(_); }); }); });}; function displayNestedErrorDetailMessage(log, detail) { if ((detail.code && detail.message)) { log.error(util.format($("%s : %s"), detail.code, detail.message)); if (detail.details) { detail.details.forEach(function(innerDetail) { displayNestedErrorDetailMessage(log, innerDetail); }); } ; } ;};